转自我的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是此时电梯停的楼层。