1321:【例6.3】删数问题(Noip1994)
输入一个高精度的正整数n,去掉其中任意s个数字后剩下的数字按原左右次序组成一个新的正整数。编程对给定的n和s,寻找一种方案使得剩下的数字组成的新数最小。
输出新的正整数。(n不超过240位)
本蒻:这个题是一个典型的贪心问题,要删掉的数应该是第一次递减的数,一直这么删下去便可以得到答案,但是要注意有零的情况。
#include#includeusing namespace std;int main(){ string s; int n; cin >> s >> n; int len = s.size(); for (int i = 0; i < n; i++) { for (int j = 0; j < len - 1; j++) { if (s[j] > s[j + 1]) { for (int k = j; k < len - 1; k++) s[k] = s[k + 1]; break; } } len–; } bool flag = false; for (int i = 0; i < len; i++) { if (s[i] != ‘0’) flag = true; if (flag) cout << s[i]; } cout << endl; return 0;}
1002

被折叠的 条评论
为什么被折叠?



