#10700. 字符处理第六题(NOIP2009)

字符处理第六题(NOIP2009)

第六题(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;
}
  1. 【判断题】每次循环找到的k一定不同。 {{ select(1) }}
  • 正确
  • 错误
  1. 【判断题】如果把第18~20行换成swap(str[j],str[j+1]),输出结果不变。 {{ select(2) }}
  • 正确
  • 错误
  1. 【判断题】去掉第30行会导致程序超时。 {{ select(3) }}
  • 正确
  • 错误
  1. 【判断题】输入的字符串可包含任意字母。 {{ select(4) }}
  • 正确
  • 错误
  1. 【选择题】输入NOIP 3,输出的结果是( )。 {{ select(5) }}
  • NPOI
  • NPIO
  • NIPO
  • PONI
  1. 【选择题】输入CSP2021 2,输出的结果是( )。 {{ select(6) }}
  • CPS2120
  • CSP2120
  • CPS2210
  • CSP2021