OJ_1120 全排序
来源:互联网 发布:下载360数据恢复软件 编辑:程序博客网 时间:2024/05/22 15:42
#include <iostream>#include <stdio.h>#include <algorithm>#include <string.h>using namespace std;const int N=6*5*4*3*2*1+1;char s[7];typedef struct str{ char s[7];}str;str result[N];int cou=0;void swap(int i,int j){ char c=s[i]; s[i]=s[j]; s[j]=c;}void getresult(int len,int st){ if(st==len-1){ // cout<<s<<endl; //printf("%s\n",s); strcpy(result[cou++].s,s); return; } for(int i=st;i<len;i++) { swap(st,i); getresult(len,st+1); swap(st,i); }}bool cmp(str a,str b){ if(strcmp(a.s,b.s)<0) return true; else return false;}void func(){ while(scanf("%s",s)!=EOF) { int len=strlen(s); // sort(s,s+len); cou=0; getresult(len,0); sort(result,result+cou,cmp); for (int i = 0; i < cou; i ++) { printf("%s\n",result[i].s); } printf("\n"); } }char re[7];int visit[7];void dfs(int n,int len){ if(n==len) { re[n]='\0'; printf("%s\n",re); return; }else { for(int i=0;i<len;i++) { if(visit[i]==0) { re[n]=s[i]; visit[i]=1; dfs(n+1,len); visit[i]=0; } } }}void init(int n){ for(int i=0;i<n;i++) { visit[i]=0; } }void func1(){ while(scanf("%s",s)!=EOF) { int len=strlen(s); init(len); dfs(0,len); printf("\n"); } }int main(int argc, char *argv[]){ //printf("Hello, world\n");func1();return 0;}
SWAP型递归结果顺序不对,需要再排序
用带visit标志进行DFS顺序是正确的
- 题目描述:
给定一个由不同的小写字母组成的字符串,输出这个字符串的所有全排列。
我们假设对于小写字母有'a' < 'b' < ... < 'y' < 'z',而且给定的字符串中的字母已经按照从小到大的顺序排列。
- 输入:
输入只有一行,是一个由不同的小写字母组成的字符串,已知字符串的长度在1到6之间。
- 输出:
输出这个字符串的所有排列方式,每行一个排列。要求字母序比较小的排列在前面。字母序如下定义:
已知S = s1s2...sk , T = t1t2...tk,则S < T 等价于,存在p (1 <= p <= k),使得
s1 = t1, s2 = t2, ..., sp - 1 = tp - 1, sp < tp成立。
- 样例输入:
abc
- 样例输出:
abcacbbacbcacabcba
- 提示:
每组样例输出结束后要再输出一个回车。
0 0
- OJ_1120 全排序
- 全排序
- 全排序
- 全排序
- 全排序
- 全排序
- 全排序
- 全排序
- 全排序
- TOJ1002 全排序问题
- 全排序问题
- 全排序问题
- java全排序
- java全排序
- 全排序算法
- 全排序算法
- 全排序算法
- 全排序算法实现
- OJ_1119
- 第四周:多线程应用(打字游戏)
- js笔记
- openssl 操作
- [贪心]Rockethon2014bWord Folding
- OJ_1120 全排序
- 孙鑫C++视频教程 rmvb格式 全20CD完整版 精品分享
- ubuntu下成功安装gdb图形界面调试工具insight
- JPUSH andoid推送开发
- SqlHelper.cs的经典代码
- 本博客说明
- 并查集路径压缩
- Java 使用方法重载实现给函数设定默认值
- codeFores375A