寻找最大数(三)
描述
给出一个整数N,每次可以移动2个相邻数位上的数字,最多移动K次,得到一个新的整数。
求这个新的整数的最大值是多少。
输入
多组测试数据。
每组测试数据占一行,每行有两个数N和K (1 ≤ N≤ 10^18; 0 ≤ K ≤ 100).
输出
每组测试数据的输出占一行,输出移动后得到的新的整数的最大值。
样例输入
1990 1
100 0
9090000078001234 6
样例输出
9190
100
9907000008001234
- #include<stdio.h>
- #include<string.h>
- int main(){
- char a[200];
- int k;
- while(~scanf("%s%d",a,&k)){
- int i,j,t,len;
- char temp;
- len=strlen(a);
- for(i=0;i<len&&k!=0;i++){
- t=i;
- for(j=i+1;j<=i+k&&j<len;j++)// 找到k范围之内最大数
- if(a[t]<a[j])
- t=j;
- for(j=t;j>i;j--){
- temp=a[j];
- a[j]=a[j-1];
- a[j-1]=temp;
- }//调换位置
- k-=t-i;//剩余次数
- }
- printf("%s\n",a);
- }
- return 0;
- }