【搜索2】P1706 全排列问题
题目描述
输出自然数1到n所有不重复的排列,即n的全排列,要求所产生的任一数字序列中不允许出现重复的数字。
输入输出格式
输入格式:
n(1≤n≤9)
输出格式:
由1~n组成的所有不重复的数字序列,每行一个序列。每个数字保留5个常宽。
输入输出样例
3
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
解题思路: 1.构建一颗搜索树
以n=3为例:
n=3,就有3个数,1,2,3. 对1,画一颗搜索树如图:
红色字体表示已经数过了的数字。
其他情况同样如上,可以画出2,3的。这样对每一棵树进行深度搜索。可以找到全部结果。
2.程序实现:
2.1定义两个数组,一个b[100],存储最后的答案,一个a[100][2],用a[100][0]存储数字1-n,用a[100][1]存储该数字是否已经被搜索过了。
2.2伪代码实现:
void dfs(int k){
if(k==n){//已经从一个数字走到n个了
输出该次全排列;
retrun ;}
for(i=1->n){//n棵搜索树都应该走完
if(当前数字没有被走过){
将这颗树标记为走过;
存储到全排列数组b[k];
dfs(下一层);
恢复标记;}
}
}
代码:
#include<iostream>
using namespace std;
int b[];
int a[][];
void dfs(int k,int n){
if(k==n+){ for(int i=;i<=n;i++){
cout<<" "<<b[i];
}
cout<<endl;
//cout<<" k: "<<k<<endl;
return;
}
for(int i=;i<=n;i++){
if(a[i][]==){
// cout<<i<<" i "<<endl;
a[i][]=;
b[k]=i;
dfs(k+,n);
a[i][]=; }
} }
int main(){
int n;
cin>>n;
for(int i=;i<=n;i++){
a[i][]=i;
a[i][]=;
}
dfs(,n); return ;
}
【搜索2】P1706 全排列问题的更多相关文章
- 洛谷 P1706 全排列问题
题目链接 https://www.luogu.org/problemnew/show/P1706 题目描述 输出自然数1到n所有不重复的排列,即n的全排列,要求所产生的任一数字序列中不允许出现重复的数 ...
- 洛谷 P1706 全排列
可能是最简单的题了……讲真搜索hhh 洛谷 P1706 全排列问题 题目描述 输出自然数1到n所有不重复的排列,即n的全排列,要求所产生的任一数字序列中不允许出现重复的数字. 输入输出格式 输入格式: ...
- 洛谷——P1706 全排列问题
P1706 全排列问题 题目描述 输出自然数1到n所有不重复的排列,即n的全排列,要求所产生的任一数字序列中不允许出现重复的数字. 输入输出格式 输入格式: n(1≤n≤9) 输出格式: 由1-n组成 ...
- 洛谷P1706全排列问题
P1706 全排列问题 题目描述 输出自然数1到n所有不重复的排列,即n的全排列,要求所产生的任一数字序列中不允许出现重复的数字. 输入输出格式 输入格式: n(1≤n≤9) 输出格式: 由1-n组 ...
- 【递归】P1706全排列问题
题目相关 题目描述 输出自然数 1 到 n所有不重复的排列,即 n的全排列,要求所产生的任一数字序列中不允许出现重复的数字. 输入格式 一个整数 n**. 输出格式 由 1∼n 组成的所有不重复的数字 ...
- 洛谷 P1706 全排列问题 :STL / dfs
题目描述 输出自然数1到n所有不重复的排列,即n的全排列,要求所产生的任一数字序列中不允许出现重复的数字. 输入输出格式 输入格式: n(1≤n≤9) 输出格式: 由1-n组成的所有不重复的数字序列, ...
- 洛谷P1706 全排列问题
题目描述 输出自然数1到n所有不重复的排列,即n的全排列,要求所产生的任一数字序列中不允许出现重复的数字. 输入输出格式 输入格式: n(1≤n≤9) 输出格式: 由1-n组成的所有不重复的数字序列, ...
- 【洛谷P1706全排列问题】
题目描述 输出自然数1到n所有不重复的排列,即n的全排列,要求所产生的任一数字序列中不允许出现重复的数字. 代码如下: #include<iostream>#include<cstd ...
- 深度搜索优先(全排列)//本内容来自《啊哈!算法》或者英文名《Aha!Algorithms》)
package Mypackage; import java.util.Scanner; public class 全排列{ static int a[]=new int[10]; static ...
随机推荐
- 面试经验合集-Java后端<一>
面试一:CDKHXJSYJS 时间:2018-12-29 周六 地点:航天科技大厦32楼 一 技术题目 <回忆版> 1.上下转型 2.Java异常:分类.处理.设计 3.二叉排序树 ...
- HTTP中application/x-www-form-urlencoded字符说明
一.概述 在学习ajax的时候,如果用post请求,需要设置如下代码. ajax.setRequestHeader("content-type","application ...
- Linux环境下安装SQL Server 2017
参考链接 https://docs.microsoft.com/zh-cn/sql/linux/quickstart-install-connect-red-hat?view=sql-server-2 ...
- PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析
sort() 函数用于对数组单元从低到高进行排序. rsort() 函数用于对数组单元从高到低进行排序. asort() 函数用于对数组单元从低到高进行排序并保持索引关系. arsort() 函数用于 ...
- 【原创】大叔经验分享(44)hdfs副本数量
当hdfs空间不足时,除了删除临时数据或垃圾数据之外,还可以适当调整部分大目录的副本数量,多管齐下: 1 查看 $ hdfs dfs -ls /user/hive/warehouse/temp.db/ ...
- 在CentOs7上部署Gunicorn
Gunicorn 的作用与优点这里就不再赘述,如不知道你也不会找这些对吧? 正文 安装简单,直接使用pip即可 pip3 install gunicorn 昨日在 Centos 中想部署Gunicor ...
- Vuex数据可视化
参考:https://gitee.com/hjm100/codes/46towe9v28a1bxfqhc7kl34 Vuex虽然能存储数据,但是一刷新就没有了,如果要实现数据持久化,就需要用vuex- ...
- node express+socket.io实现聊天室
参照网址:https://www.jb51.net/article/135058.htm https://www.cnblogs.com/limitcode/p/7845168.html https: ...
- ~/Library/MobileDevice/Provisioning Profiles
~/Library/MobileDevice/Provisioning Profiles
- ansible的logging模块用来写日志
[root@node-1 library]# cat dolog.py #!/bin/env python ANSIBLE_METADATA = { 'metadata_version': 'alph ...
