/* * ===================================================================================== * * Filename: 1-8.c * * Description: * * Version: 1.0 * Created: 2014年06月13日 10时25分11秒 * Revision: none * Compiler: gcc * * Author: Wenxian Ni (Hello World~), niwenxianq@qq.com * Organization: AMS/ICT * * ===================================================================================== */ #include<stdio.h> #define N 100 int nP[N]; int nTarget; int GetMin(int n) { int total = 0; int nNum = 0; int nTo = 0; int nDown = 0; int i; for(i=1;i<=n;i++) { total += nP[i] * (i-1); nNum += nP[i]; } nTarget = 1; nTo = total; nDown = nP[1]; for(i=2;i<=n;i++) { nTo += nDown; nTo -= nNum - nDown; nDown += nP[i]; if(nTo < total) { nTarget = i; total = nTo; } } return nTarget; } int main() { nTarget = -1; int i; int n; while(~scanf("%d",&n)&&n!=0) { for(i=1;i<=n;i++) scanf("%d",&nP[i]); int nTarget = GetMin(n); printf("%d ",nTarget); } }
1. 从第1层开始,数组从下标1开始
2. 之前想到的取所有电梯数总数再平均的方法错误
3. 如果上楼耗k能量,下楼耗1能量,则方法一样,只是在计算的时候乘以系数即可完成
4. 如果再考虑到耗时,比如电梯上一层耗时,人上层楼耗时t1,下一楼耗时t2, 最后求总耗时
5. 如果可以停的楼间不止一楼?
6. 把以上所有因素都加在一起?