循环控制

题意:给出一个整数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;
}


posted @ 2014-09-28 20:10  NYNU_ACM  阅读(142)  评论(0编辑  收藏  举报