标签:
<span style="font-size:18px;">#include <stdio.h>  
#include <string.h>  
int main(){  
    char temp,str[20];  
    int k,len,mark,flag,j;  
    while(scanf("%s %d",str,&k)!=EOF){  
        len=strlen(str);  
        if(k==0)  
        {  
            puts(str);  
            continue;  
        }  
        for(int i=0;i<len;i++){  
            temp=str[i],flag=1;  
            for(j=i+1;j<=i+k&&j<len;j++){//贪心,从i+1到i+k寻找最大的数 并记录下序号  
                if(str[j]>temp)  
                temp=str[j],mark=j,flag=0;  
            }  
            if(!flag){  
                for(int q=mark;q>i;q--)//一步一步相邻的交换。。第一次以为直接两个数交换位置,结果错了。。  
                temp=str[q],str[q]=str[q-1],str[q-1]=temp;  
                k=k-mark+i;  
            }     
            if(k==0)  
            break;  
        }  
        puts(str);  
    }  
    return 0;  
}  </span>版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:
原文地址:http://blog.csdn.net/qjt19950610/article/details/47089173