深搜之全排列
来源:互联网 发布:java正则替换 编辑:程序博客网 时间:2024/06/04 18:33
/*1、全排列问题【问题描述】 输出自然数1到n所有不重复的排列,即n的全排列,要求所产生的任一数字序列中不允许出现重复的数字。【输入格式】 n(1≤n≤9)【输出格式】 由1~n组成的所有不重复的数字序列,每行一个序列。【输入样例】Form.in 3【输出样例】Form.out1 2 31 3 22 1 32 3 13 1 23 2 1解题分析: 联想到啊哈算法中有关小哈在盒子里放扑克牌的模型即可轻松求解, 也就是说,用step表示当前啊哈站在的盒子的面前,i表示的是手中的第 i号牌,那么vis[i]表示的则是手上的第i张牌有没有被放进盒子里的状态 a[step] = i则表示将第i张牌放到当前小哈所走到的盒子面前*/# include<cstdio># include<iostream>using namespace std;int a[11];int vis[11];int n;int total;void dfs( int step ) { if ( step == n+1 ) { total++; for ( int i = 1;i <= n;i++ ) cout<<a[i]<<" "; cout<<endl; return; } for ( int i = 1;i <= n;i++ ) { if ( vis[i] == 0 ) { a[step] = i; vis[i] = 1; dfs(step+1); vis[i] = 0; } } }int main(void){ cin>>n; dfs(1); cout<<"total = "<<total<<endl; return 0;}
1 0
- 深搜之全排列
- 深搜基础之全排列
- 递归之全排列
- 字串之全排列
- DFS之全排列
- 全排列之hash
- STL之全排列
- STL之全排列
- 排列组合之全排列
- 递归之全排列
- DFS之全排列
- DFS之全排列
- 算法之全排列
- 集合之全排列
- 递归之全排列
- 全排列之Hash实现
- 递归算法之全排列
- 递归算法之全排列
- 4、Service详解(二):本地Service
- TypeError: __init__() got an unexpected keyword argument ‘maxlength’
- 多个版本jdk共存环境变量相关说明
- 搜素之任意数的拆分和
- match_parent和fill_parent的区别
- 深搜之全排列
- UML之关系
- C语言scanf函数详细解释
- 最长公共子序列(递归法)
- 页面跳转小试 - 模拟a.click事件
- 自学设计模式之工厂方法模式
- 炸弹人(暴力枚举)
- Metasploit渗透Ubuntu 12.04攻击测试演练
- Android常见错误