首页 > 其他 > 详细

UVa 146 ID码

时间:2015-02-27 13:32:25      阅读:318      评论:0      收藏:0      [点我收藏+]

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

思路:调用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;
}



UVa 146 ID码

原文:http://blog.csdn.net/buxizhizhou530/article/details/43966605

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!