p1130 删数问题

版权声明:https://blog.csdn.net/huashuimu2003 https://blog.csdn.net/huashuimu2003/article/details/84438309

题目

描述 Description
输入一个高精度的正整数n(≤240位),去掉其中任意s个数字后剩下的数字按原左右次序将组成一个新的正整数。编程对给定的n和s,寻找一种方案,使得剩下的数字组成的新数最小。
(仔细思考,这道题并不是很水)
输入格式 Input Format
两行,每行一个整数:
n(n为小于240位的整数)
s
输出格式 Output Format
最后剩下的最小数。
样例输入 Sample Input

178543
4

样例输出 Sample Output

13
时间限制 Time Limitation
1s
来源 Source
noip原题

代码

#include<bits/stdc++.h>
#include<string>
using namespace std;
char a[255];

int main() {
	int s;
	bool flag=0;
	scanf("%s %d",a,&s);
	int len=strlen(a);
	for (int i=1; i<=s; i++) 
	{
		for (int j=0; j<len; j++) 
		{
			if (a[j]>a[j+1]) 
			{
				for (int k=j; k<len; k++) 
					a[k]=a[k+1];
				break;
			}
		}
		len--;
	}
	for (int i=0;i<len;i++)
	{
		if (a[i]!='0'||i==len-1) flag=1;
		if (flag) printf("%c",a[i]);
	}
	printf("\n");
	return 0;
}

猜你喜欢

转载自blog.csdn.net/huashuimu2003/article/details/84438309