[编程之美]电梯调度算法

时间复杂度较差的一个

View Code
 1 int BestSolution(int* arr,int n)
2 {
3 int idx=1;
4 int min=0;
5 for(int i=1;i<n;++i)
6 min+=arr[i]*i;
7 for(int i=1;i<n;++i)
8 {
9 int calc=0;
10 for(int j=0;j<i;++j)
11 calc+=arr[j]*(i-j);
12 for(int j=i+1;j<n;++j)
13 calc+=arr[j]*(j-i);
14 if(calc<min)
15 {
16 min=calc;
17 idx=i+1;
18 }
19 }
20 return idx;
21 }

 

较好的一个

View Code
 1 int BestSolution(int* arr,int n)
2 {
3 int n1,n2,n3;
4 int idx=0;
5
6 n1=0;
7 n2=arr[0];
8 n3=0;
9 for(int i=1;i<n;++i)
10 n3+=arr[i];
11
12 for(int i=1;i<n;++i)
13 {
14 if(n1+n2<n3)
15 {
16 idx=i;
17 n1+=n2;
18 n3-=arr[i];
19 n2=arr[i];
20 }
21 else
22 break;
23 }
24 return idx;
25 }



posted @ 2012-03-22 23:30  Cavia  阅读(478)  评论(0编辑  收藏  举报