您的位置:首页 > 其它

(组合数学3.1.1.1)POJ 1146 ID Codes(字典序法)

2013-10-08 21:50 411 查看
/*
* POJ_1146.cpp
*
*  Created on: 2013年10月8日
*      Author: Administrator
*/

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>

using namespace std;

char s[60];
int l;

bool get(){
int i = l - 1;
int j;

while(i > 0 && s[i-1] >= s[i]){
i--;
}
if(!i){
return false;
}

int mp = i;
for(j = i + 1 ; j < l ; ++j){
if(s[i-1] >= s[j]){
continue;
}

if(s[j] < s[mp]){
mp = j;
}
}

swap(s[mp],s[i-1]);
sort(s+i,s+l);
return 1;
}

int main(){
while(scanf("%s",&s)!=EOF,s[0] !='#'){
l = strlen(s);
if(get()){
printf("%s\n",s);
}else{
printf("No Successor\n");
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: