Uva 10098 - Generating Fast
来源:互联网 发布:淘宝少女屎 编辑:程序博客网 时间:2024/05/17 06:30
生成字典序全排列
1Y
引用STL
#include<stdio.h>#include<string.h>#include<algorithm>int main(){char s[110];int t;scanf("%d",&t);while(t--){scanf("%s",s);int len=strlen(s);std::sort(s,s+len);do{printf("%s\n",s);}while(std::next_permutation(s,s+len));printf("\n");}return 0;}
看原理自己编写
给你一个序列28467186310
下一个排列是啥呢?
28467 是是前缀,不变的
看后面186310
找到3是1以后比1大的最小元素
变为
386110
然后反序
301168
接上就是了
#include<stdio.h>#include<string.h>#include<algorithm>#include<stdlib.h>#define INF (int)1e9char s[110];bool Next_per(){int len=strlen(s);int aim=INF;int i;for(i=len-1;i>0;i--){if(s[i]>s[i-1]){aim=i-1;break;}}if(aim==INF)return 0; for(i=len-1;i>aim;i--){if(s[i]>s[aim])break;}char t;t=s[i];s[i]=s[aim];s[aim]=t;int l=aim+1,r=len-1;while(l<r){t=s[l];s[l]=s[r];s[r]=t;l++;r--;}return 1;}int main(){int t;scanf("%d",&t);while(t--){ scanf("%s",s);int len=strlen(s);std::sort(s,s+len);do{printf("%s\n",s);}while(Next_per());printf("\n");}return 0;}
- UVa 10098 Generating Fast
- uva 10098 - Generating Fast
- UVa 10098 Generating Fast
- uva 10098 - Generating Fast
- UVa 10098 - Generating Fast
- UVa 10098 Generating Fast
- Uva 10098 - Generating Fast
- UVA 10098 - Generating Fast
- UVa 10098 - Generating Fast
- uva 10098 - Generating Fast
- UVa 10098: Generating Fast
- uva 10098 Generating Fast
- uva - 10098 - Generating Fast
- UVa 10098 - Generating Fast
- uva 10098 - Generating Fast
- UVa 10098 - Generating Fast
- uva 10098 - Generating Fast
- UVa 10098 - Generating Fast
- 实用Linux/Unix快捷键及常用命令
- Oracle数据库开发学习笔记
- android 解析json数据(一)
- mysql 以某用户登录错误 ERROR 1045 (28000): Access denied for user 'bill'@'localhost' (using password: YES)
- how to use winpe uninstall win8 driver
- Uva 10098 - Generating Fast
- Oracle 10g问题解决
- java 中2个字节(byte)拼成 short 类型的值
- Ruby On Rails Ubuntu
- 调研:开源搜索引擎
- elasticsearch-river-jdbc
- 火狐stylish插件解决BIOS之家没有滚动条问题
- Stop Audio Record
- 给程序员的忠告:九种不值得你追随的老板