这道题水了。
思想很简单
就是每次你要找最大的一个数
例如59846679992495 9
第一个数是9 最后一个应该是9 + 1
第二个....9 9 +1+1
......9 9+1+1+1
9 9+1+1+1+1
9 9+1+1+1+1+1
m+1+j(第几个大数)
#include<iostream> #include<cstdio> #include<cstring> using namespace std; int main() { int n,m; char a[105]; char maxd[105]; scanf("%d",&n); getchar(); while(n--){ memset(a,0,sizeof(a)); memset(maxd,0,sizeof(maxd)); scanf("%s %d",&a,&m); int flag=0; int len=strlen(a); // cout << len <<endl; maxd[0]=a[0]; //存最大值 for(int j=0;j<len-m;j++){ for(int i=flag+1;i<m+j+1;i++){ if(maxd[j]<a[i]){ //更新最大值 flag=i; maxd[j]=a[i]; // cout << maxd[j] <<endl; } } } for(int i=0;i<len-m;i++) printf("%c",maxd[i]); putchar('\n'); } return 0; }