循环控制
题意:给出一个整数N,每次可以移动2个相邻数位上的数字,最多移动K次,得到一个新的整数。
求这个新的整数的最大值是多少。
分析如图:
代码如下:
#include <iostream> #include <string> #include <string.h> using namespace std; int main() { char s[20] ; int k ; while(cin >> s >> k) { int len = strlen(s) ; for(int j = 0 ; j < len && k ; j++) { int t = j ; for(int i = j + 1 , ii = 0; i < len && ii < k ; i++,ii++) { if(s[t] < s[i]) t = i ; } for(int i = t ; i > j ;i--) { char t = s[i] ; s[i] = s[i-1] ; s[i-1] = t ; k-- ; } } cout << s << endl ; } return 0; }