题目大意:数组或列表存储小于10的非负整数,经过K次数组相邻位置元素变换(必须是K次),求连城的数字的最大值
如 int array ={0,1,3,2}经过K=1变换,最大值为1032;经过K=2次变换代表的最大值3012;
输入:
第一行T,表示输入的测试用例次数;
第二行K,表示经过的变换次数;
第三行N,表示数组的长度;
第四行是输入数组里的值,以空格间隔;
后面是K和N的以及数组数字输入的交替。
输出:交换后的数组串
例:
输入:
4
2
5
4 2 1 3 5
3
5
4 2 1 3 5
4
5
4 2 1 3 5
5
5
4 2 1 3 5
输出:
4 3 2 1 5
4 5 2 1 3
5 4 2 1 3
5 4 2 3 1
解题思路:
从列表的最左侧开始遍历,遍历K此,首先判断第一位是否是0至第K为数字的最大值,是的话就不变,移植下一位。如果不是最大值,找出最大值的位置,减去当前判断数字的位置,c =(最大值的位置 - 当前判断数字的位置),K=K-c为剩下交换的次数,然后从最