首页 > 代码库 > UVa 11491 奖品的价值
UVa 11491 奖品的价值
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 奖品的价值
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。