XYNUOJ 2042: 寻找最大数
2018-03-19 21:45
169 查看
2042: 寻找最大数
时间限制: 1 Sec 内存限制: 64 MB[提交][状态][讨论版]
题目描述
请在整数 n 中删除m个数字, 使得余下的数字按原次序组成的新数最大,比如当n=92081346718538,m=10时,则新的最大数是9888输入
第一行输入一个正整数T,表示有T组测试数据 每组测试数据占一行,每行有两个数n,m(n可能是一个很大的整数,但其位数不超过100位,并且保证数据首位非0,m小于整数n的位数)输出
每组测试数据的输出占一行,输出剩余的数字按原次序组成的最大新数样例输入
2 92081346718538 10 1008908 5
样例输出
9888 98解题思路:该题是贪心,若要删去n个数,求最大。
如 1008908 5
该数值的长度 len 为 7,删5个数,则就是选2个数,那么前 6 个数中一定有符合第一个的数,找其中最大的数为 9,从 9 开始(也就是第5个数)
现在提供几组测试数据
1000000800009 11 89
1000000800000 11 80
代码如下:# include<stdio.h>
# include<string.h>
int main(){
int t;
scanf("%d",&t);
while(t--)
{
char a[105];
int m;
scanf("%s %d",a,&m);
int n=strlen(a);
int k=n-m; //k 代表选几个数
int c1=0;
while(k--)
{ int c2; //不能对其赋值
char c='0';
for(int i=c1;i<n-k;i++)
{
if(a[i]>c) //寻找最大的一个
{
c=a[i];
c2=i;
}
}
printf("%c",c);
c1=c2+1;
}
printf("\n");
}
return 0;
}
相关文章推荐
- XYNUOJ 1106 1107 求最大公约数 求最小公倍数
- xynuoj 三个数求最大值
- XYNUOJ 1122 布尔矩阵
- 南阳oj448 寻找最大数
- XYNUOJ 1273: 【搜索基础】全排列问题
- XYNUOJ 竞赛总分
- XYNUOJ 1259: 找零钱
- XYNUOJ 问题 G: 火力覆盖
- xynuoj 幂字符串
- XYNUOJ 1078 连续自然数的阶乘求和
- XYNUOJ 积木大赛
- XYNUOJ 最长上升子序列
- xynuOJ 铺砖
- XYNUOJ 1071 译密码
- 寻找01矩阵中的最大子矩阵--华为OJ机试--java语言版
- XYNUOJ 第四次比赛 懒省事得小名
- XYNUOJ 行车路程
- xynuoj 2906 单词排序
- XYNUOJ 问题 H: 统计难题
- xynuoj昆虫繁殖