转自我的Blog 正确解法 思路:首先定义一个函数f()计算不满意度的和,为了方便后面的计算,该函数的返回值类型为Point类型。后面再计算1<x<34时对应的y值,另外还需要一个Point类型的全局变量cache,作为数据缓冲。之后,对比计算得到的y值,如果比cache.y小,就写入cache。 C++ Code Point cache; Point f(Point pt){ Point p; int x = pt.x; p.x = pt.x; p.y = (1+33)*(33-x-1)/2+(x-2)*(1+x-2)*3/2;return p;} Point GMinV(){ Point p; Point p1; p.x = 0; while((p.x)<34) {p.x ++p1.y = f(p); if(p1.y<cache.y){cache.x = p.x;cache.y = p1.y;}} return cache;} //cache.y是不满度的最小值,cache.x是此时电梯停的楼层。