nyoj 1057寻找最大数(三) 贪心

来源:互联网 发布:h265网络直播编码器 编辑:程序博客网 时间:2024/05/22 11:49
#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;}

2 0