第六题(NOIP2009)
#include<iostream>
using namespace std;
const int maxn=50;
void getnext(char str[]) {
int l=strlen(str),i,j,k,temp;
k=l-2;
while(k>=0&&str[k]>str[k+1]) k--;
i=k+1;
while(i<l&&str[i]>str[k]) i++;
temp=str[k];
str[k]=str[i-1];
str[i-1]=temp;
for(i=l-1;i>k;i--)
for(j=k+1;j<i;j++)
if(str[j]>str[j+1]) {
temp=str[j];
str[j]=str[j+1];
str[j+1]=temp;
}
return;
}
int main() {
char a[maxn];
int n;
cin>>a>>n;
while(n>0) {
getnext(a);
n--;
}
cout<<a<<endl;
return 0;
}
- 【判断题】每次循环找到的k一定不同。
{{ select(1) }}
- 【判断题】如果把第18~20行换成swap(str[j],str[j+1]),输出结果不变。
{{ select(2) }}
- 【判断题】去掉第30行会导致程序超时。
{{ select(3) }}
- 【判断题】输入的字符串可包含任意字母。
{{ select(4) }}
- 【选择题】输入NOIP 3,输出的结果是( )。
{{ select(5) }}
- 【选择题】输入CSP2021 2,输出的结果是( )。
{{ select(6) }}
- CPS2120
- CSP2120
- CPS2210
- CSP2021