本文主要是介绍最大的数字(maxnumber),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
最大的数字
题目描述
给定一个十进制整数 n n n,保证 n n n 的首位不为 0 0 0,你必须删除其中 d d d个数字,使得留下的数字最大。请输出留下的最大数。
输入格式
-
第一行:单个整数表示 d d d
-
第二行:单个整数表示 n n n
输出格式
- 单个整数:表示 n n n被删除 d d d个数字之后留下的最大数
样例 #1
样例输入 #1
3
10000
样例输出 #1
10
样例 #2
样例输入 #2
3
42391
样例输出 #2
91
提示
30% 的数据, n < 10000 , d ≤ 2 n<10000,d≤2 n<10000,d≤2
60% 的数据, n < 1 0 500 , d ≤ 200 n<10^{500} ,d≤200 n<10500,d≤200
100% 的数据, 1 ≤ n < 1 0 300000 , 1 ≤ d < n 1≤n<10^{300000},1≤d<n 1≤n<10300000,1≤d<n
#include<bits/stdc++.h>
using namespace std;
string s, ans;
int d;
stack<char> t;
int main() {cin >> d;cin >> s;int len = s.size();for (int i = 0; i < len; i++) {//栈不空,当前比前一个数大,就删除前一个数while (!t.empty() && d > 0 && s[i] > t.top()) {t.pop();d--;}t.push(s[i]);}while (d--) t.pop(); //删除个数没达到,从后面继续删while (!t.empty()) {ans = t.top() + ans;t.pop();}cout << ans;return 0;
}
这篇关于最大的数字(maxnumber)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!