/*
* =====================================================================================
*
* 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\n",nTarget);
}
}
1. 从第1层开始,数组从下标1开始
2. 之前想到的取所有电梯数总数再平均的方法错误
3. 如果上楼耗k能量,下楼耗1能量,则方法一样,只是在计算的时候乘以系数即可完成
4. 如果再考虑到耗时,比如电梯上一层耗时,人上层楼耗时t1,下一楼耗时t2, 最后求总耗时
5. 如果可以停的楼间不止一楼?
6. 把以上所有因素都加在一起?