104.全排列(深搜)搜索与回溯
2016-03-20 22:44
302 查看
1294 全排列[/b]
时间限制: 1s
空间限制:
128000 KB
题目等级 :
黄金 Gold
题解
查看运行结果
题目描述 Description
给出一个n,
请输出n的所有全排列
输入描述 Input
Description
读入仅一个整数n (1<=n<=10)
输出描述 Output
Description
一共n!行,每行n个用空格隔开的数,表示n的一个全排列。并且按全排列的字典序输出。
样例输入 Sample
Input
3
样例输出 Sample
Output
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
数据范围及提示 Data Size &
Hint
分类标签 Tags 点此展开
搜索代码:
#include<
cstdio >
#include<
iostream >
using namespace
std;
int
n,visit[11];
int a[11];
void dfs(int
b)
{
if(b==n+1)
{
for(int
i=1;i<=n;++i)
printf("%d
",a[i]);//注意一定要把当前取得的点放到一个数组中去,到了最后时把数组输出,否则如果是深搜的时候,每找到一个就输出,会使输出的数据不全*/
printf("\n");
return ;
}
for(int
i=1;i<=n;++i)
{
if(!visit[i])
{
visit[i]=1;//标志设为这个i已经在排列中了
a[b]=i;
dfs(b+1);
visit[i]=0;//回溯
a[b]=0;
}
}
}
int main()
{
scanf("%d",&n);
int b=1;
for(int
i=1;i<=n;++i)
{
if(!visit[i])
{
visit[i]=1;
a[1]=i;
dfs(b+1);
visit[i]=0;
a[1]=0;
}
}
return 0;
}
相关文章推荐
- java做图表的JFreeChart的使用
- Erlang 游戏开发经验总结
- UIScrollView的滑动视图切换(懒加载)
- 基于Netty开发水利通信软件
- 公约数和公倍数【nyoj40】
- 问题 G: C语言习题 医生值班
- U-boot的环境变量: bootcmd 和bootargs
- php 数组2
- 猎豹MFC--第一个MFC程序设计(不用向导)
- ext.js打印出提示弹窗(鼓捣了两天终于尼玛出来了)
- ASP.NET-服务器客户端的信息保持
- 安卓第十六天笔记-音频与视频播放
- 《学会提问》读书笔记——第二章
- Redis安装包安装流程及学习总结
- php效率高写法
- asp.net-页面生命周期
- IOS Animation-KeyPath值
- .before和.after+3D旋转案例(字体翻转的效果)
- Oracle SQL 性能优化粗略总结
- 框架SSH浅解