寻找最大数(三)
时间限制:
1000 ms | 内存限制:
65535 KB
难度:
2
-
描述
-
给出一个整数N,每次可以移动2个相邻数位上的数字,最多移动K次,得到一个新的整数。
求这个新的整数的最大值是多少。
思路:找到k范围内的最大值,与从第一个数开始的数换位置,到剩余k为0为止。将一串数字定义为字符型。
#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;
}