abaabc,abaacb,ababac。都包括3个a、2个b、1个c,按由小到大排序。给出每个ID找出它的后继。
#include <iostream>
#include <algorithm>
using namespace std;
//谢谢博友 《挑战程序设计竞赛》有介绍
int main()
{
while(1)
{
string a;
cin>>a;
if(a=="#")
{
break;
}
string b=a;
sort(b.begin(),b.end());
next_permutation(a.begin(),a.end());
if(a==b)
{
cout<<"No Successor"<<endl;
}else
{
cout<<a<<endl;
}
}
return 0;
}
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
//方法二
int main()
{
while(1)
{
string s;
cin>>s;
if(s=="#")
{
break;
}
string t=s;
sort(t.begin(),t.end(),greater<char>());
if(t==s)
{
//cout<<t<<endl;
cout<<"No Successor"<<endl;
continue;
}
int flag=0;
for(int i=s.size()-1;i>=0;i--)
{
for(int j=s.size()-1;j>i;j--)
{
if(s[i]<s[j])
{
swap(s[i],s[j]);
sort(s.begin()+i+1,s.end());
flag=1;
break;
}
}
if(flag==1)
{
break;
}
}
cout<<s<<endl;
}
return 0;
}