首页 > 其他 > 详细

1023: 巨人排队(2017年中南大学研究生复试机试题 )

时间:2019-03-17 15:29:13      阅读:276      评论:0      收藏:0      [点我收藏+]

1023: 巨人排队

时间限制: 1 Sec  内存限制: 128 MB
提交: 185  解决: 58
[提交] [状态] [讨论版] [命题人:外部导入]

题目描述

巨人国的小学生放假了,老师要给小朋友们排队了。可是这个老师有强迫症,一定要路队上的小朋友按照身高从高到矮排序(也就是排在前面的不能比后面的矮)。小朋友呢也很调皮,一旦老师给他排好队就不愿意动了。这个时候小朋友们一个一个的从教室里出来了,每个小朋友一出来老师就要给小朋友安排好位置。请问老师最少要给小朋友排几条路队呢?

输入

对于每组数据,第一行两个数n,表示小朋友总数量(1<=n<=100000)

第二行n个整数,表示小朋友身高,身高不超过30000(我也觉得很吓人)

输出

对于每组数据,输出一个整数,表示最少的路队数

样例输入

8
389 207 155 300 299 170 158 65

样例输出

2

提示

最少要排两条路队,其中一种方案是398-207-155-65 和 300-299-170-158
 
 1 #include<iostream>
 2 
 3 using namespace std;
 4 /*此题的核心思想是贪心算法,每次都尽量排在队尾小朋友与欲排队小朋友身高差距最小的队伍*/
 5 int studentQue[100005];
 6 int dex[100005];
 7 int main12(){//小朋友呢也很调皮,一旦老师给他排好队就不愿意动了,意思是新来的只能排在
 8     //队伍的最后面而不能进行插入队伍 
 9     int n;
10     while (cin >> n){
11         int num = 1;
12         for (int i = 1; i <= n; i++){
13             cin >> studentQue[i];
14         }
15         dex[1] = studentQue[1];
16         for (int i = 2; i <= n; i++){
17             bool flag = true;
18             bool flag1 = true;
19             int min = 30001;
20             int imin = 1;
21             for (int j = 1; j <= num; j++){//找现有队伍里队尾身高最接近的队伍插入 
22                 int a = dex[j] - studentQue[i];
23                 if (a >= 0 && a<min){
24                     min = a;
25                     imin = j;
26                     flag1 = false;
27                 }
28                 
29             }
30             if (!flag1){//比第j队的队尾矮就入队 
31                 //cout<<"dex:"<<dex[imin]<<"stu:"<<studentQue[i]<<endl;
32                 dex[imin] = studentQue[i];
33                 flag = false;
34             }
35             //如果没有合适的队伍可以排,就新开一条队伍
36             if (flag){
37                 num++;
38                 dex[num] = studentQue[i];
39             }
40         }
41         cout << num << endl;
42     }
43     return 0;
44 }

 

1023: 巨人排队(2017年中南大学研究生复试机试题 )

原文:https://www.cnblogs.com/tangyimin/p/10546993.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!