UVa 1146—ID Codes

库函数调用:

#include

#include
#include
using namespace std;
int main()
 {
     string str;
     while(cin>>str)
     {
         if(str[0]=='#')
            break;
        bool flag=true;
        if(next_permutation(str.begin(),str.end()))
         {
            flag=false;
            cout<         }
        if (flag)
             cout<<"No Successor"<      }
     return 0;

 }

二:手敲代码

 

从后向前找出第一个后面字母比前面字母大的字母,然后在它之后找比它大的字母中最小的,交换之后,把这个字母后面的字母按升序排列。
#include
#include
#include
using namespace std;
int main()
{
    int i,j,t;
    char s[100];
    while(scanf("%s",s)&&s[0]!='#')
    {
        int len=strlen(s);
        for(i=len-1;i>0;i--)
        {
            if(s[i]>s[i-1])
                break;
        }
        if(i==0)
        {printf("No Successor\n");
            continue;
        }
        else{
            for(j=len-1;j>=i;j--){
                if(s[j]>s[i-1]){
                    char tem=s[i-1];
                    s[i-1]=s[j];
                    s[j]=tem;
                    break;
                }
            }
        }
        sort(s+i,s+len);
        printf("%s\n",s);
    }
    return 0;
}
 
  

你可能感兴趣的:(UVa 1146—ID Codes)