输入一个数值num,对1到num的所有的数值进行全排列;

其实这个题目可以看成是将1到num个数字放入num个有序的盒子里面;
当将最后一个数字放入盒子里的时候,就输出所有盒子里的数字;这就是一个排列的情况;

用深度优先遍历;dfs,函数怎么写?

首先递归函数。

然后思考递归函数怎么写?
第一:初试态,从第一个盒子开始放下数字;dfs(1);
第二:终止条件,所有的数字全部放下,也就是走到了最后一个盒子的后面;step==num+1;返回;
当dfs返回到上一层的dfs函数的时候,在上一层的dfs函数中就把刚才放入的数字取出来,再选择下一个可以放入的数字放入该盒子中;刚才取出的数字用于放入后面的盒子中;

/*************************************************************************
> File Name: sort_card_dfs.cpp
> Author:
> Mail:
> Created Time: 2015年11月12日 星期四 09时35分50秒
************************************************************************/ #include<iostream>
using namespace std;
const int MAXNUM = 100; int num;//要排序数字的个数
int box[MAXNUM];//用来表示排序情况的数组
int book[MAXNUM];//标记已经放下的数字 void dfs(int step)
{
if (step == num+1){//把所有的数字都放完了之后,就要将此排列输出;
for (int i = 1; i <= num; i++){
cout << box[i] << " ";
}
cout << endl;
return;//其实没有也行,但是没有话程序还要执行下面的循环再返回
}
/*
从num个数字中选择第一个没有放下的数字,然后把它放下(标记为1);
*/
for (int i = 1; i <= num; i++){
if (book[i] == 0){
box[step] = i;
book[i] = 1;
dfs(step+1);
book[i] = 0;//将之前放下的数字取走(标记为0);用于下次排列放入;
}
}
} int main()
{
cout << "Input the n: ";
cin >> num; dfs(1); return 0;
}

输入一个数值num,对1到num的所有的数值进行全排列的更多相关文章

  1. OJ题:输入一个多位的数字,求各数位相加。

    题目内容: 输入一个多位的数字,1求各数位相加. 例如输入12345,则计算1+2+3+4+5=15 输入格式: 一个整数 输出格式: 一个整数 输入样例: 1234567890 输出样例: 45 时 ...

  2. 在JS中如何判断所输入的是一个数、整数、正数、非数值?

    1.判断是否为一个数字: Number(num)不为 NaN,说明为数字 2. 判断一个数为正数: var num=prompt("请输入:"); if(Number(num)&g ...

  3. 输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数

    题目:输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数.例如输入12,从1到12这些整数中包含1 的数字有1,10,11和12,1一共出现了5次. 分析:首先最先想到的是遍历从1到n的每 ...

  4. Python输入一个数字打印等腰三角形

    要求 用户输入一个数字,按照数字打印出等腰三角形 思路 1,用户输入的数字为n代表一共有多少行 2,使用一个循环带两个for循环,第一层循环是循环行数,第二层两个平行for循环一个打印空格一个打印*号 ...

  5. 请输入一个大于7的整数,输出小于k并且至少满足下面2个条件中的1个条件的所有正整数

    import java.util.Scanner; /** * @author:(LiberHome) * @date:Created in 2019/3/6 22:06 * @description ...

  6. 编写程序,输入一个N,返回角谷变换(达到1所需)的次数

    import java.util.Scanner; /** * @author:(LiberHome) * @date:Created in 2019/3/6 17:36 * @description ...

  7. 写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和

    例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19. 思路:我们可以先将整数的每一个数字取出来,每次取个位数字,取完后退位(将数字除以10),在取个位数字,依次取出所有的数 ...

  8. 【C语言】输入一个整数N,求N以内的素数之和

    [C语言]输入一个整数N,求N以内的素数之和 /* ========================================================================== ...

  9. 字符串数组 输入3个字符串,要求按由小到大的字母顺序输出; 输入n个学生的姓名和学号到字符串数组中,在输入一个姓名,如果班级有该生则返回其信息,否则返回本班无此人

    输入3个字符串,要求按由小到大的字母顺序输出 如 输入franch england china,输出结果是china england franch 三个数排序输出,比较三个数的大小怎么做? a=18 ...

随机推荐

  1. React组件式编程Demo-用户的增删改查

    1.项目结构 项目是基于webpack4, 参考 创建基本的webpack4.x项目 2.页面效果 初始化效果

  2. WebService如何封装XML请求 以及解析接口返回的XML

    原 WebService如何封装XML请求 以及解析接口返回的XML 置顶 2019年08月16日 15:00:47 童子泛舟 阅读数 28 标签: XML解析WebService第三方API 更多 ...

  3. PHP mysqli_fetch_field_direct() 函数

    返回结果集中某个单一字段(列)的 meta-data,并输出字段名称.表格和最大长度: mysqli_fetch_field_direct(result,fieldnr); 参数 描述 result ...

  4. luogu 3698 [CQOI2017]小Q的棋盘 树形dp

    Code: #include <bits/stdc++.h> #define N 107 #define setIO(s) freopen(s".in","r ...

  5. am335x system upgrade usb wifi rtl8188eus(十九)

    1      Scope of Document This document describes how to port rtl8188eus driver to linux 4.14.y desig ...

  6. Transformer的PyTorch实现--转载

    转载自 https://blog.csdn.net/stupid_3/article/details/83184691

  7. 发布jar项目到maven仓库

    在要发布的项目pom文件中添加配置: <distributionManagement> <repository> <id>releases</id> & ...

  8. iOS UILabel显示HTML文本

    NSString * htmlString = @"<html><body> Some html string \n <font size=\"13\ ...

  9. centernet 相关

    1.下代码 git clone https://github.com/Duankaiwen/CenterNet.git 2.

  10. Leetcode题目75.颜色分类(双指针-中等)

    题目描述: 给定一个包含红色.白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色.白色.蓝色顺序排列. 此题中,我们使用整数 0. 1 和 2 分别表示红色.白 ...