地址:http://acm.hit.edu.cn/hoj/problem/view?id=1191
题意:对某个包含某些特定数字(0~9)的数,求包含这些数字且比已知数大的最小数(就是生成下一个排列,若是所有排列中最后一个,则输出no successor
stl: bool next_permutation(begin, end);//改变区间内元素的顺序,产生下一个排列。
bool prev_permutation(begin, end);//产生前一个排列。
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
#include <iostream> #include <cstdio> #include <cstring> #include <cstdlib> #include <queue> #include <math.h> #include <stack> #include <algorithm> #include <vector> #define LL long long #define inf 0x3f3f3f3f #define PI acos(-1.0) #define M 1000000007 using namespace std; int main() { char str[110]; while(scanf("%s",str)&&strcmp(str,"#")){ int len=strlen(str); if(next_permutation(str,str+len))printf("%s\n",str); else printf("No Successor\n"); } return 0; }