问题 A 分治法求解全排列问题
来源:互联网 发布:丅VB欢乐今宵主题曲 编辑:程序博客网 时间:2024/04/29 01:10
题目描述
设R=(1, 2, .., n),计算R的全排列。 分治法求解全排列的算法思想: 设R=(1, 2, .., n)的全排列为P(R), 若R=(),则P()=(); 否则,P(R)={(1)P(2, 3, .., n),(2)P(1, 3, .., n), (3)P(2, 1, .., n), .., (n)P(2, .., n-1, 1)}; 同样地,P(2, 3, .., n)={(2){3, 4, .., n}, (3){2, 4, .., n}, .., (n){3, .., n-1, 2}}
输入
输入为一组不大于7的整数。
输出
对每个输入的整数n,用分治法计算并输出1..n的全排列。
样例输入
123
样例输出
1 1 2 2 1 1 2 3 1 3 2 2 1 3 2 3 1 3 2 1 3 1 2
#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<malloc.h>using namespace std;void perm(int a[],int k,int m){ int i; if(k==m){ for(i=0;i<=m;i++) printf("%d ",a[i]); printf("\n"); return; } else{ for(i=k;i<=m;i++){ swap(a[i],a[k]); perm(a,k+1,m); swap(a[i],a[k]); } }}int main(){ int n; int a[100]; while(~scanf("%d",&n)){ int i; for(i=0;i<n;i++){ a[i]=i+1; } perm(a,0,n-1); } return 0;}
0 0
- 问题 A 分治法求解全排列问题
- 分治与递归法:全排列问题
- 回溯法求解全排列问题
- 全排列问题(回溯求解)
- 递归求解全排列问题
- 递归分治解决全排列问题
- 分治策略之全排列问题
- 全排列问题之递归求解
- 全排列问题之递归求解
- 全排列方法求解八皇后问题
- 递归求解字符数组全排列问题
- 回溯法求解全排列问题(可去除重复排列)
- 分治策略--排列问题
- 分治与递归(一)----全排列问题
- 递归分治算法之全排列问题(Java版本)
- 递归和分治思想解全排列问题
- 分治法求解逆序数问题
- 分治法求解最大子数组问题
- 火狐谷歌浏览器上传文件问题
- 51nod-【1014 X^2 Mod P】
- 嵌入式开发的初步认识
- JAVA编程基础(六) 在Java类中添加方法
- windows中的内存映射
- 问题 A 分治法求解全排列问题
- Android中XML三种解析的区别
- Java 多线程同步的五种方法
- MySQL5.7.10免安装版配置
- 创建带属性的XML文档
- 无题
- register,static,const
- 问题 B 全排列问题
- Android学习笔记(四)--RecyclerView扩展下拉刷新与左滑删除