码迷,mamicode.com
首页 > 其他好文 > 详细

UVa 11491 奖品的价值

时间:2017-01-28 16:41:58      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:txt   char   get   http   std   stream   amp   cout   for   

https://vjudge.net/problem/UVA-11491

题意:一个n位整数,删除其中的d个数字,输出最大值。

思路:肯定从高位开始分析,代码如下。

 1 #include<string>
 2 #include<iostream>  
 3 using namespace std;
 4 
 5 const int maxn = 100000 + 5;
 6 
 7 int n, d;
 8 char a[maxn];
 9 
10 int main()
11 {
12     //freopen("D:\\txt.txt", "r", stdin);
13     while (cin>>n>>d && n&&d)
14     {
15         getchar();
16         int k = 0;
17         for (int i = 0; i < n; i++)
18         {
19             char c = getchar();
20             while (k>0 && k+(n-i)>n-d && a[k] < c)//需要保留n-d个数字,已经填写到第k个,还有n-i个未填写  
21                 k--;                      //若k+(n-i)>n-d,说明已经填写的当中有需要删除的,此时选择删除小于c的数字  
22             if (k < n-d) a[++k] = c;//若k<n-d,说明还没有填写够n-d个数字  
23         }
24         a[++k] = \0;
25         cout << a+1 << endl;
26     }
27     return 0;
28 }

 

UVa 11491 奖品的价值

标签:txt   char   get   http   std   stream   amp   cout   for   

原文地址:http://www.cnblogs.com/zyb993963526/p/6354314.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!