您的位置:首页 > 其它

电梯调度算法

2016-05-20 21:53 260 查看
 代码如下:

     


#include <iostream>


  using namespace std ;


 


 const int N = 10 ;


 int person[N+1] = {0 , 2 , 5 , 7 , 3 , 5 , 2 , 6, 2 , 6 , 3} ; 


  


  int floor2()


  {


      //先计算出在第一层停止的时候 所需要的花费


       int T = 0;


       int N1 = 0 ; //在第一层以下下的人数 


       int N2 = person[1] ; //在第一层处下的人数 


       int N3 = 0 ;      //在第一层之上下电梯的人数 


       int floor =  1 ;


       for(int i = 2 ; i <= N ;i++) //先计算出第1层停止需要爬取的楼层数目 


       {


         T += person[i] * (i - 1) ;


         N3 += person[i] ;     


          


       }


        


       for(int i = 2 ; i <= N ;i++)


       {


         if(N1 + N2 <= N3) //说明第i+1层的结果会大于第i层 


           {


               T += N1 + N2 - N3 ;


               N1 += N2 ;


               N2 = person[i] ; 


               N3 -= person[i] ;


               floor = i ;


               


           }     


           else  //否则第i层的结果已经最小,故不需要计算第i+1层 


           break ; 


            


       }     


       return floor ;


  } 


  


  


  int floor1() //使用简单算法计算 


  {


      int tempfloor = 0 ;


      int min = 6553 ;//存储最小值


      int floor = 1   ;//存储停靠的楼层 


      int i , j ;


      


      for( i = 1 ; i <= N ;i++) //表示第i楼层电梯停靠 


      {


        tempfloor = 0 ;


                       


        for( j = 1 ; j < i ;j++)      


            tempfloor += (i - j) * person[j] ;       


                         


        for(j = i + 1 ; j <= N ; j++)         


            tempfloor += (j - i) * person[j] ;    


        


        if(min > tempfloor)   


        {


          min = tempfloor ;


          floor = i ;          


        }       


        


     //   cout<<"tempfloor"<<i<<":"<<tempfloor<<endl;                   


      }


      return floor ;


  }


  


  


  int main()


  {      


    int temp1 = floor1() ;  


    int temp2 = floor2() ;  


    cout<<temp1<<" "<<temp2<<endl ;


    getchar() ;


    return 0 ;    


  }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: