ID Codes(poj 1146)
来源:互联网 发布:投标报价软件 编辑:程序博客网 时间:2024/05/21 09:06
传送门:poj 1146。
题意就是给你一串字符,让你求它字典序的下一种排列,找不到的话就输出“No Successor”,这里可以自己手写也可以直接用库函数next_permutation。
自己写的话找下一种排列的方法:
1.从后往前找到最大的非递增序列。
2.找到这个序列中最大的且比总序列中该序列(第一步找到的序列)的前一个字符小的字符。
3.对换找到的字符和总序列中该序列(第一步找到的序列)的前一个字符。
4.将对换后的该序列(第一步找到的序列)字典序排序。
/*#include<stdio.h>//使用库函数#include<string.h>#include<algorithm>using namespace std;char s[55];int main(){while(~scanf("%s",s)){if(s[0]=='#')break;int len=strlen(s);if(next_permutation(s,s+len))printf("%s\n",s);elseprintf("No Successor\n");memset(s,0,sizeof(s));}}*/#include<stdio.h>//自己手写#include<string.h>#include<algorithm>using namespace std;char s[55]; int main(){while(scanf("%s",s)){if(s[0]=='#')break;int len=strlen(s);int t=len-1;int flag=1;for(;t>=1;t--){if(s[t-1]<s[t]){flag=0;break;}}if(flag){printf("No Successor\n");continue;}char f='z';int temp;for(int i=t;i<len;i++){if(s[i]<f&&s[i]>s[t-1]){f=s[i];temp=i;}}s[temp]=s[t-1];s[t-1]=f;sort(s+t,s+len);printf("%s\n",s);memset(s,0,sizeof(s));}}
0 0
- ID Codes(poj 1146)
- poj 1146 ID Codes
- POJ 1146 ID Codes
- poj 1146 ID Codes
- poj 1146 ID Codes
- POJ 1146 ID Codes
- POJ 1146:ID Codes
- poj 1146 ID Codes
- ID Codes POJ - 1146
- POJ 1146 ID Codes(枚举排序)
- poj 1146 ID Codes(next_permutation)
- POJ 1146 ID Codes (STL)
- ACM POJ 1146 ID Codes
- POJ 1146 ID Codes 笔记
- [ACM] poj 1146 ID Codes(字符串的下一个排列)
- 【POJ】1146 - ID Codes(字符串下一个字典序)
- UVa 146 & POJ 1146 - ID Codes
- POJ 1146 ID Codes (生成排列)
- hdu5917Instability(找规律+暴力)
- 对4k sector size的一点认识
- html、css里全角和半角状态下输入的区别
- java集合工具类
- JavaScript作用域和闭包
- ID Codes(poj 1146)
- Auxiliary Set(dfs求每个节点的儿子个数)
- Super Ugly Number -- leetcode
- drawable文件夹下的图片命名不能为大写!!
- UGUI中添加粒子
- 【Android】AndroidStudio调试apk时直接使用签名好的签名文件,用正式签名进行调试
- 写的超级棒
- UVa 1395
- 返回一级指针 创建链表