44分,求大佬看下我的思路哪里有问题
  • 板块P1106 删数问题
  • 楼主cywscs
  • 当前回复2
  • 已保存回复2
  • 发布时间2021/12/23 23:59
  • 上次更新2023/10/28 13:48:23
查看原帖
44分,求大佬看下我的思路哪里有问题
606717
cywscs楼主2021/12/23 23:59

一开始是这么想的:

  • 按照常识,一个数越小,则越高位的数值应该越小,如97531,重新排列后最小值为13579
  • 要使得剩下的数最小,就先把这个大数按照字典序由小到大排列,然后才从后往前删去k个数。

代码

#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
int main() {
	string s1;
	int k = 0, ans = 0;
	cin >> s1;
	cin >> k;
	sort(s1.begin(), s1.end());
	for (int i = 0; i < s1.length(); i++)
	{
		if (s1[i] != '0')
		{
			ans = i;
			break;
		}
	}
	for (int i = 0 + ans; i < (s1.length()-k); i++)
	{
		cout << s1[i];
	}
	return 0;
}
2021/12/23 23:59
加载中...