输出1,2,3,4,5,6,7 这几个数组成的全排列

  ps:可以使用枚举(但是需要7层循环)

使用递归(深度优先遍历的思路,DFS也可利用栈数据结构来实现,LIFO)

package com.nxz.blog.otherTest;/*** 简单的深度优先遍历算法学习*/
public class Test03 {/*** 输出1,2,3,4,5,6,7的全排列* 可以将问题形象化,也就是说:将以上几个数放到7个空的位置 □ □ □ □ □ □ □ ,使用一个变量来表示当前处理的是第几个框,* 使用一个长度为7的数组来表示一个数是否已经放置过了* 当处理当前框的时候,需要考虑当前位置可以放置的值有哪些(也就是进行遍历操作),* 当前step处理完成时候,step+1,处理下一个框,下一个框的出来过程和当前处理过程一样(也就是使用递归)** @param args*/public static void main(String[] args) {deepFirstSearch(new int[]{1, 2, 3, 4, 5, 6, 7}, 0);System.out.println("共有组合个数:" + sum);}private static int[] book = new int[10];private static int[] res = new int[7];private static int sum;//最开始处理step以0开始public static void deepFirstSearch(int[] arr, int step) {//递归的终止条件if (step == arr.length) {for (int re : res) {System.out.print(re);}System.out.println();sum++;return;}//当前框时,可以放置那些值for (int val : arr) {//表示当前数还没有放置过if (book[val] == 0) {//将当前值标记为已放置book[val] = 1;//将arr[i]放入当前位置res[step] = val;//处理下一个框step+1deepFirstSearch(arr, step + 1);//处理完毕后经单签book[i]复原book[val] = 0;}}return;}
}

输出:

1234567
1234576
1234657
1234675
1234756
1234765
1235467
1235476

。。。。。

共有组合个数:5040

或者是有1-9,9个数字,把9个数字填入以下方格,并且每一个方格的数字都不同,使等式成立  □□□ + □□□ = □□□

这个问题可以用上边的代码,只是将判断终止条件修改下,在终止时,判断(100*方块1 + 10 * 方块2 + 方块3 )+ (100 * 方块4 + 10 * 方块5 + 方块6) = =100 * 方块7 + 10 * 方块8 + 方块9

如果等式成立则输出 等式,不成立则继续

基础-简单的深度优先遍历相关推荐

  1. 实现教材算法7.2利用邻接矩阵构造无向图的算法,在此基础上进行深度优先遍历和广度优先遍历。

    软件学院实验报告 姓名:              学号:              专业:               年级: 课程名称 数据结构 实验名称 实验9.图的遍历 实验的准备阶段 实验内 ...

  2. 简单的深度优先遍历和广度优先遍历

    代码来源于<啊哈!算法>. 1.深度优先遍历: (1)无权值 #include<stdio.h> int book[101],n, e[1001][1001], sum; vo ...

  3. java 递归深度优先遍历_Java基础 - 二叉树的遍历之深度优先遍历(递归遍历)

    package com.yc.test; import java.util.ArrayList; import java.util.List; import com.yc.tree.ThreeLink ...

  4. 【数据结构基础】图的遍历方法与应用

    前言 数据结构,一门数据处理的艺术,精巧的结构在一个又一个算法下发挥着他们无与伦比的高效和精密之美,在为信息技术打下坚实地基的同时,也令无数开发者和探索者为之着迷. 也因如此,它作为博主大二上学期最重 ...

  5. “回溯”算法总结(深度优先遍历 + 状态重置 + 剪枝)

    地址:https://leetcode-cn.com/problems/permutations/solution/hui-su-suan-fa-python-dai-ma-java-dai-ma-b ...

  6. 关于深度优先遍历算法-c++语言

    深度优先遍历及例题加讲解 竞赛里面重要算法,全当学习笔记啦.(如有不足多多谅解) 零.什么是深度优先遍历 深度优先遍历简称DFS(Depth First Search). 我们简单的举个栗子: 从前有 ...

  7. 图的深度优先遍历和宽度优先遍历C语言,图的广度、深度优先遍历 C语言

    以下是老师作为数据结构课的作业的要求,没有什么实际用处和可以探讨和总结的的地方,所以简单代码直接展示. 宽度优先遍历: #include #include #include using namespa ...

  8. 用python深度优先遍历解迷宫问题

    这篇文章主要给大家介绍了关于python迷宫问题深度优先遍历的相关资料,深度优先搜索算法(Depth-First-Search),是搜索算法的一种,需要的朋友可以参考下 一.迷宫介绍 用python解 ...

  9. 深度优先遍历_二叉树的深度优先遍历,理解框架真的能够套用题目吗?不了解执行过程可能很难。...

    显然这是一个很普通的二叉树的深度优先遍历,从中可以提取出这样的框架: class TreeNode { int val; TreeNode left, right; } public void isF ...

最新文章

  1. %00截断攻击的探索
  2. MFC Initinstance中DoModal()返回-1
  3. IntelliJ Idea解决Could not autowire. No beans of 'xxxx' type found的错误提示
  4. 机器学习 模型性能评估_如何评估机器学习模型的性能
  5. iphone黑屏转圈_iphone XR被曝新BUG,众多用户中招,无规律黑屏假死
  6. c语言自学门槛,初学C语言的人最常问的几个问题
  7. 前端学习(2312):react之路由基础
  8. 当Kubernetes应用遇到阿里分批发布模式
  9. Ubuntu下配置Apache的Worker模式
  10. 转:mysql show processlist命令 详解
  11. Pytorch学习笔记调整学习率torch.optim.lr_scheduler._LRScheduler
  12. java发送带附件的电子邮件
  13. was升级jdk版本_was升级jdk1.7
  14. 文件夹批量重命名001开始的方法
  15. 为什么公司宁愿花15k去重招一个应届生,也不愿意加薪5k留住老程序员?
  16. 微信小程序picker-view中的view的高度修改问题,只能用px单位
  17. Ubuntu 查看ISO文件
  18. 数字经济赋能实体,Matrix Global Exchange为投资者带来优质项目
  19. 前端HTML页面实现批量下载
  20. 汇编inc为什么不影响cf_为什么INC和DEC指令不会影响进位标志?

热门文章

  1. resttemplate 请求重试_使用Spring Cloud Ribbon重试请求
  2. mysql 开发权限_mysql权限管理
  3. samba权限跟linux权限,linux之samba与linux权限
  4. linux挂载wondiws目录,linux cifs自动挂载windows硬盘或文件夹
  5. nginx注册为windows系统服务
  6. 【linux】kill命令模板
  7. Spring @scope注解
  8. mysql bench建立一张表_使用MySQL Workbench建立数据库,建立新的表,向表中添加数据...
  9. 隐藏html表格边框显示,table显示所有边框 table的边框怎么显示不出来
  10. php unable to save,php – Laravel save()未定义