寻找最大数
时间限制:
1000 ms | 内存限制:
65535 KB
难度:
2
-
描述
-
请在整数 n 中删除m个数字, 使得余下的数字按原次序组成的新数最大,
比如当n=92081346718538,m=10时,则新的最大数是9888
-
输入
-
第一行输入一个正整数T,表示有T组测试数据
每组测试数据占一行,每行有两个数n,m(n可能是一个很大的整数,但其位数不超过100位,并且保证数据首位非0,m小于整数n的位数)
输出
- 每组测试数据的输出占一行,输出剩余的数字按原次序组成的最大新数 样例输入
-
2 92081346718538 10 1008908 5
样例输出
-
9888 98
-
-
#include <iostream> #include <string> using namespace std; int main() { int n,k,i; string str; cin>>n; while(n--) { cin>>str>>k; int len = str.length(); int leaveCount = len-k;//剩余数长度//应该输出个数 int j = 0; int t = j;//pos = 0; while(leaveCount>0) { char max_value = str[j]; for(j; j <len-leaveCount+1; j++) { if(str[j]> max_value ) { max_value = str[j]; t = j;//更新最大数index } } cout<<max_value; j = ++t;//更新pos leaveCount--;//更新已输出个数 } cout<<endl; } return 0; }
#刚开始想的是数组搬动,就像实现冒泡一样,外加一层循环 O(m*n^2) 不出意料超时,然后搜索代码临界条件和数据更新出错,WA 掉,重新选择搜索ac