题目是某BLOG上转来的,解法
一幢33层的大楼有一部电梯停在第一层,它一次最多能容纳32人,而且只能在第2层至第33层中的某一层停一次,对于每个人来说,他往下走一层楼梯感到1分不满意,往上走一层楼梯感到3分不满意,现在有32个人在第一层,并且他们分别住在第2至33层的每一层,问:电梯停在那一层,可以使得这32个人不满意的总分达到最小?最小值是多少?(有些人可以不乘电梯而直接从楼梯上楼)2000年全国竞赛第二试最后一题。
C++ Code
Point cache;
Point f(int x){
pt.x = x;
pt.y = (33-x)*(x+1+33)/2+3*(x-2)*(x-1+2);
return pt;
}
Point GMV(NULL){
Point pt;
while((pt.x<33)){
pt.x++;
Point p = f(x);
if(p.x > cache.x){
cache.x = p.x;}
}
return cache;
}
// endl
说明:执行GMV(),cache.x是求得的层数,cache.y是不满度的最小值。
算法很简单。
200字以内,仅用于支线交流,主线讨论请采用回复功能。