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.指针的活用
    */

  • 相关阅读:
    AxWindowsMediaPlayer的详细用法
    C# Windows Media Player控件的常用属性及方法
    C#中winform使用相对路径读取文件的方法
    DataGridView控件在加载数据时产生的闪烁问题
    浅谈C#中的双缓冲
    几种C#实现播放声音的方法
    C#下实现软件欢迎界面
    DataGridView控件内建立日期选择编辑列
    程序员值得看的电影(20170420EDIT)
    员工照片
  • 原文地址:https://www.cnblogs.com/A-yes/p/9894263.html
Copyright © 2011-2022 走看看