XYNUOJ 1255 寻找最大数—贪心算法

来源:互联网 发布:电信网络客服电话 编辑:程序博客网 时间:2024/06/08 18:52

欢迎访问XYNUOJ

1255: 寻找最大数

时间限制: 1 Sec  内存限制: 128 MB
提交: 8  解决: 7
[提交][状态][讨论版][Edit] [TestData]

题目描述

请在整数 n 中删除m个数字, 使得余下的数字按原次序组成的新数最大,

比如当n=92081346718538,m=10时,则新的最大数是9888

输入

第一行输入一个正整数T,表示有T组测试数据
每组测试数据占一行,每行有两个数n,m(n可能是一个很大的整数,但其位数不超过100位,并且保证数据首位非0,m小于整数n的位数)

输出

每组测试数据的输出占一行,输出剩余的数字按原次序组成的最大新数

样例输入

292081346718538 101008908 5

样例输出

988898
/***类型:贪心算法**题目来源:XYNU  1255  寻找最大数 **时间:2017/7/31**问题描述:请在整数 n 中删除m个数字, 使得余下的数字按原次序组成的新数最大,**输入:T组测试数据 **输出:值 */#include<stdio.h>#include<string.h>#include<algorithm>using namespace std; int cmp(int a, int b){return a > b;}int main(){int T;scanf("%d",&T);while(T--){char a[110];int b[110];int m;scanf("%s%d",&a,&m);//其实不用转换也可以直接进行排序 for(int i = 0; i < strlen(a); i++)  {b[i] = a[i] - '0';} sort(b,b+strlen(a),cmp);for(int i =  0; i < strlen(a)-m; i++){printf("%d",b[i]);}printf("\n"); } return 0;}