标签:
题目:根据停留人数选出需要爬楼梯最少的停留
想法:对于电梯的要求:电梯在一楼出发,待用户输完想停的楼层后,停在其中的一层楼然后所有人下去徒步找各自的目标地,使最后所有人的爬楼梯数最短。
设最后停在i层,i层下有n1个人,i层有n2个人,i+1层有n3个人,假设停i层为最短Y,若停在i-1层则Y-(n1-n2-n3)停在i+1层则Y-(n3-n1-n2)则n1>n2+n3停在i-1层,n3>n1+n2则电梯停在i+1层合算其余停i。
代码:
#include<iostream> using namespace std; int main() { int people[7]; int i; int n1 = 0; int n2; int n3 = 0; /*int sum;*/ for (i = 0; i < 7; i++) { cout<< "第"<<i<<"层"<<endl; cin >>people[i]; /* sum += people[i];*/ } n2 = people[0]; for (i = 1; i <= 9; i++) { n3 += people[i]; } for (i = 0; i < 10; i++) { if (n3 > n1 + n2) { n1 = n1 + n2; n2 = people[i + 1]; n3 -= people[i + 1]; } else { cout << "要停在第"<<i+1<<"层"<<endl; break; } } return 0; }
截图:
感想:没有想出来具体的算法,只能参考老师上课讲的思路,假设有三层 分别为i ;i+1; i-1;然后再进行算法。
标签:
原文地址:http://www.cnblogs.com/TSbj/p/4442888.html