zoukankan      html  css  js  c++  java
  • 电梯时间计算


    // Z_1008.cpp : 定义控制台应用程序的入口点。
    //2015-07-13
    /*
    The highest building in our city has only one elevator. A request list is made up with N positive numbers. The numbers denote at which floors the elevator will stop, in specified order. It costs 6 seconds to move the elevator up one floor, and 4 seconds to move down one floor. The elevator will stay for 5 seconds at each stop.
    
    For a given request list, you are to compute the total time spent to fulfill the requests on the list. The elevator is on the 0th floor at the beginning and does not have to return to the ground floor when the requests are fulfilled.
     即电梯调度算法
     */
    
    #include<iostream>
    using namespace std;
    
    int* sort(int *a,int N)
    {
    	int top = 0,j=1;
    	int *b = new int[N + 1];
    	b[0] = 0;
    	for (int i = 0; i < N; i++)
    	{
    		if (top < a[i])
    		{
    			top = a[i];
    			a[i] = 0;
    			b[j] = top;
    			j++;
    		}
    	}
    	for (int i = 1; i < N; i++)
    		for (int m = 0; m < N-i;m++)
    		{
    			if (a[m] < a[m + 1])
    			{
    				int n = a[m]; a[m] = a[m + 1]; a[m + 1] = n;
    			}
    		}
    		top = j;
    	for (int i = 0; i <= N-top ; i++)
    	{
    		b[j] = a[i];
    		j++;
    	}
    	return b;
    }
    
    int time(int *b,int N)
    {
    	int sum = 0;
    	for (int i = 0; i < N; i++)
    	{
    		int x = b[i] - b[i + 1];
    		if (x<0)
    		{
    			sum += (-6 * x + 5);
    		}
    		else
    		{
    			sum += (4 * x + 5);
    		}
    	}
    	return sum;
    }
    
    int main(void)
    {
    	int N=111,j=0,ans[256];
    	while (N > 0)
    	{
    		cout << "input require number:";
    		cin >> N;
    		int  *a=new int[N], buff, *b;
    		for (int i = 0; i < N; i++)
    		{
    			cin >> buff;
    			if (buff>0 && buff <= 100)
    				a[i] = buff;
    			else
    				cout << "erro:overside!
    ";
    		}
    		b = sort(a, N);
    		ans[j]=time(b, N);
    		j++;
    	}
    	for (int i = 0; i < j-1; i++)
    	{
    		cout << ans[i] << endl;
    	}
    
    }
    
    /*
     *  1.动态数组的申请
     *	2.指针的活用
    */

  • 相关阅读:
    VS2019正式版 密钥 Visual Studio 2019 破解 激活码 Key
    关于随机数的前世今生
    木兮的纪中集训感想
    浅谈欧洲算法——模拟退火
    你没听过的梅森旋转算法
    二分贪心杂题
    DP专项训练
    实验八 进程间通信
    实验七 信号
    实验六 进程基础
  • 原文地址:https://www.cnblogs.com/A-yes/p/9894263.html
Copyright © 2011-2022 走看看