题目链接:点击打开链接
这个题目感觉思维性特别强,我感觉原来我的思维性还是可以的,但是最近是越来越不行了,对于这种没有涉及算法的题目,思维性是越来越差了,可能是最近过得有点安逸了吧,思维没有以前活跃了,最近也没有运动了,感觉整个人都没有了精神,原来的思维,没有这么差吧。
代码:
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
#define N 1050
using namespace std;
int main()
{
int T,i,m,j,k;
char str[N];
scanf("%d",&T);
while(T--)
{
scanf("%s %d",str,&m);
for(i=0; str[i]; i++)
这里的str[i]我感觉用的特别好,等到是假的时候就会跳出来,反正我是没有想到
{
k=i;这里标记了一下
for(j=i+1; j<=i+m&&str[j]; j++)
{ 这里在一个for循环里面直接把所有的工作都做完了,
if(i==0&&str[j]==‘0‘)
continue;
if(str[j]<str[k])
k=j;其实这一步是很巧秒的
}
if(k !=i)
{下面就是开始交换了
char ch=str[k];
for(j=k; j>i; j--)
str[j]=str[j-1];
str[j]=ch;
m-=(k-i);
}
}
printf("%s\n",str);
}
return 0;
}
其实这个代码一遍找下来思路还是很清晰的,思维好的人应该一下就可以找出来,我最近也不知道是怎么了,最近也没有锻炼过身体,,,,,