1008

每次计算时间的消耗都需要依靠上一次的值,再加上本次的时间消耗。这是动态规划的特性。

递推式为:

v[i],表示电梯到第i次停靠时的时间消耗值。a[i],表示第i次电梯的停靠楼层。

v[i] = v[i-1] + abs(a[i] -a[i-1])*6+5  当电梯向上升

v[i] = v[i-1] + abs(a[i] -a[i-1])*4+5  当电梯向下降

 

示例代码:

 1 #include <iostream>
 2 using namespace std;
 3 int v[100];
 4 int add(int *a,int size)
 5 {
 6     memset(v,0,sizeof(v));
 7     v[0] = a[0]*6+5;
 8     int i=0;
 9     for(i=1;i<size;i++)
10     {
11         if(a[i-1] > a[i])
12             v[i] =v[i-1] + abs(a[i-1] -a[i])*4 +5;
13         else
14             v[i] =v[i-1] + abs(a[i-1] -a[i])*6 +5;
15     }
16     return v[i-1];
17 }
18 int main()
19 {
20     int num;
21     while(cin>>num && num)
22     {
23         int *a = new int[num];
24         for(int i=0;i<num;i++)
25             cin >> a[i];
26         cout << add(a,num)<<endl;
27         delete [] a;
28     }
29     return 0;
30 }

 

posted on 2012-04-13 18:58  笔记吧... 可能只有自己看得懂  阅读(840)  评论(0编辑  收藏  举报