NYOJ-寻找最大数(贪心)

寻找最大数


描述:
请在整数 n 中删除m个数字, 使得余下的数字按原次序组成的新数最大,
比如当n=92081346718538,m=10时,则新的最大数是9888
输入:
第一行输入一个正整数T,表示有T组测试数据
每组测试数据占一行,每行有两个数n,m(n可能是一个很大的整数,但其位数不超过100位,并且保证数据首位非0,m小于整数n的位数)
输出:
每组测试数据的输出占一行,输出剩余的数字按原次序组成的最 大新数
样例输入:
2
92081346718538 10
1008908 5
样例输出:
9888
98

解题思路:

首先确定该数是几位数,然后从最高位开始往前找,并把该位赋值为最大值

程序代码:

#include<stdio.h>
#include<string.h>
int main()
{
	char str[110];
	int a[110];
	int t,n,m,i,k,maxn,flag;
	scanf("%d",&t);
	while(t--)
	{
		scanf("%s%d",str,&m);
		n=strlen(str);
		for(i=0;str[i]!='\0';i++)
			a[i]=str[i]-'0';
		i=0;
		while(m<n)
		{
			maxn=0;	
			for(;i<=m;i++)
				if(a[i]>maxn)
				{
					maxn=a[i];
					flag=i;
				}
			i=flag+1;
			m++;
			printf("%d",maxn);	
		}
		printf("\n");
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/hezhiying_/article/details/80697255
今日推荐