UVa 146 ID码

来源:互联网 发布:gameloft的java小游戏 编辑:程序博客网 时间:2024/05/23 00:12

题意:输出一个排列的后继排列,如果是最大的降序排列,则输出没有后继。

思路:调用STL中的next_permutation()函数即可。不过这个函数在求后继时是一个循环状态,即全升序是全降序的后继,循环回来了。所以在调用之前判断一下是否为全降序序列即可。       感觉用这个函数没什么技术含量,有时间用纯C写一个。

Code:

#include<cstdio>#include<algorithm>#include<cstring>using namespace std;char code[70];int main(){  while(scanf("%s",code)==1 && code[0]!='#')  {    int len=strlen(code);    bool flag=1;//是否为降序     for(int i=0;i<len-1;++i)      if(code[i]<code[i+1]) { flag=0; break;}    if(flag) printf("No Successor\n");    else    {      next_permutation(code,code+strlen(code));      printf("%s\n",code);    }                        }  return 0;}



0 0