当前位置:编程学习 > C/C++ >>

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

 
 * 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");  
        }  
    }  
}  

 

补充:软件开发 , C++ ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,