码迷,mamicode.com
首页 > 其他好文 > 详细

UVa 146 ID码

时间:2015-02-27 13:34:29      阅读:113      评论:0      收藏:0      [点我收藏+]

标签:uva   枚举   排列   暴力求解   

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

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

标签:uva   枚举   排列   暴力求解   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!