前几天看纪磊的《啊哈!算法》一书,里面讲算法讲的特别通俗细致,真的是初中生都能读得懂的算法书(我大二才读:P)。这段代码很适合初学算法的同学。

#include<iostream>
using namespace std;
int a[], book[], n;
//全排列算法,运用深度优先搜索dfs
void dfs(int step)
{
int i;
if (step == n + ) //如果站在第n+1个箱子前,则表示前n个箱子已经排列好
{
for (i = ; i <= n; i++) //输出一种排列(1-n号箱子中的扑克牌编号)
{
cout << a[i];
}
cout << endl;
return; //返回之前的一步(最近一次调用dfs函数的地方) }
//当站在第step个箱子面前应该放什么牌
//依次实验1、2、3、4.....是否可行
for (i = ; i <= n; i++)
{
//判断扑克牌i是否还在手上
if (book[i] == )
{
a[step] = i; //将第i号扑克牌放到第step个箱子中
book[i] = ; //将book[i]设置为1则表示第i张扑克牌不在手中 dfs(step + ); //第step个箱子放好后,走到下一个箱子
book[i] = ; //同时收回刚才尝试的扑克牌 }
}
return;
}
int main(){
cin >> n;
dfs();
return ; }

C++DFS方法全排列的更多相关文章

  1. 验证LeetCode Surrounded Regions 包围区域的DFS方法

    在LeetCode中的Surrounded Regions 包围区域这道题中,我们发现用DFS方法中的最后一个条件必须是j > 1,如下面的红色字体所示,如果写成j > 0的话无法通过OJ ...

  2. DFS实现全排列

    复习一下DFS实现全排列,具体思想见:https://www.cnblogs.com/chiweiming/p/9279858.html public class Main{ static int a ...

  3. (DFS、全排列)POJ-2718 Smallest Difference

    题目地址 简要题意: 给若干组数字,每组数据是递增的在0--9之间的数,且每组数的个数不确定.对于每组数,输出由这些数组成的两个数的差的绝对值最小是多少(每个数出现且只出现一次). 思路分析: 对于n ...

  4. DFS 之 全排列

    题目描述输出自然数1到n所有不重复的排列,即n的全排列,要求所产生的任一数字序列中不允许出现重复的数字. 我们可以模拟出n个盒子和n张卡片,我们需要将n张卡片分别放到n个盒子里,且每个盒子只能放1张卡 ...

  5. 用DFS 解决全排列问题的思想详解

    首先考虑一道奥数题目: □□□ + □□□ = □□□,要将数字1~9分别填入9个□中,使得等式成立.例如173+286 = 459.请输出所有合理的组合的个数. 我们或许可以枚举每一位上所有的数,然 ...

  6. dfs 的全排列

    #include <iostream> #include <algorithm> #include <cstdio> #include <string> ...

  7. (DFS、全排列)POJ-3187 Backward Digit Sums

    题目地址 简要题意: 输入两个数n和m,分别表示给你1--n这些整数,将他们按一定顺序摆成一行,按照杨辉三角的计算方式进行求和,求使他们求到最后时结果等于m的排列中字典序最小的一种. 思路分析: 不难 ...

  8. DFS输出全排列

    前言 输入n(1 <= n <= 20),按字典序输出所有1~n的排列.如果排列数量太多,则只需要输出前100个 输入样例 3 输出样例 1 2 3 1 3 2 2 1 3 2 3 1 3 ...

  9. Forest Program(dfs方法---树上的环)

    题意:http://acm.hdu.edu.cn/showproblem.php?pid=6736 沙漠中的每一个连通块都是一棵仙人掌:一个连通块是一棵仙人掌当且仅当连通块中不存在重边和自环,并且每一 ...

随机推荐

  1. android开发时程序出现崩溃问题

    原因:项目目录下的:src与gen中的包名不一致时,出现问题 <manifest xmlns:android="http://schemas.android.com/apk/res/a ...

  2. Python爬虫实例(一)爬取百度贴吧帖子中的图片

    程序功能说明:爬取百度贴吧帖子中的图片,用户输入贴吧名称和要爬取的起始和终止页数即可进行爬取. 思路分析: 一.指定贴吧url的获取 例如我们进入秦时明月吧,提取并分析其有效url如下 http:// ...

  3. hotspot的简单介绍

    慢慢开始深入了解java,才知道java虚拟机有很多种,其中最为知名的应该就是hotspot了,接下来是hotspot的一点简单介绍. 没错,Java是解释语言,但并不意味着它一定被解释执行.早期 的 ...

  4. 剑指Offer——把字符串转换成整数

    题目描述: 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数. 数值为0或者字符串不是一个合法的数值则返回0   输入描述: 输入一个字符串,包括数字字母符号,可以为空 输出描述: 如果 ...

  5. LocalActivityManager与ActivityGroup

    Helper class for managing multiple running embedded activities in the same process. This class is no ...

  6. java_基础——用代码编译.java文件+加载class文件

    [本文介绍] 本文不是深入理解和使用java编译器,只是在代码里编译.java文件的helloWorld.这种技术还是蛮有意思的,说不定在将来的某些只能化项目会运用到!^_^ [简单编译的流程] [j ...

  7. 前端黑客之XSS、CSRF

    XSS:跨站脚本,发生在目标网站中目标用户的浏览器层面上,当用户浏览器渲染整个HTML文档的过程中出现了不被预期的脚本指令并执行时,XSS就会发生. 绝大多数XSS攻击都会采用嵌入一段远程或者第三方域 ...

  8. awk的常用操作场景以及工作中涉及到的一些场景实例

    废话不多说,直接上这个实例: 一. 统计apache日志单ip访问请求数排名:  假设apache日志内容access.log内容为: /Dec/::: +] - /Dec/::: +] - /Dec ...

  9. jsonp解决跨域问题

    日常开发网页中,时常遇到跨域问题,通常解决办法:后端提供的接口支持jsonp格式,前端采用dataType:jsonp. 一:Jquery封装的AJAX,dataType:jsonp格式的方法: $. ...

  10. STL: fill,fill_n,generate,generate_n

    fill Assigns the same new value to every element in a specified range. template<class ForwardIter ...