寻找最大数(三)
时间限制:1000 ms | 内存限制:65535 KB
难度:2
描述
给出一个整数N,每次可以移动2个相邻数位上的数字,最多移动K次,得到一个新的整数。
求这个新的整数的最大值是多少。
输入
多组测试数据。
每组测试数据占一行,每行有两个数N和K (1 ≤ N≤ 10^18; 0 ≤ K ≤ 100).
输出
每组测试数据的输出占一行,输出移动后得到的新的整数的最大值。
样例输入
1 2 3
| 1990 1 100 0 9090000078001234 6
|
样例输出
1 2 3
| 9190 100 9907000008001234
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| import java.util.Scanner;
public class T13寻找最大数 {
public static void main(String[] args) { Scanner sc=new Scanner(System.in); while(sc.hasNext()){ String num=sc.next(); int k=sc.nextInt(); String s=f(num,k); System.out.println(s); } }
private static String f(String num, int k) { char[] ch=num.toCharArray(); while(k>0){ for (int i = 0; i < ch.length; i++) { char c=ch[i]; int index=0; for (int j = i; j <= k+i&&j<ch.length; j++) { if(ch[j]>c){ c=ch[j]; index=j; } } if(index>0){ k-=(index-i); for (int j = index; j >i ; j--) { char h=ch[j]; ch[j]=ch[j-1]; ch[j-1]=h; } } } break; } String str=new String(ch); return str; } }
|