package Mypackage;
import java.util.Scanner;
public class 全排列{
static int a[]=new int[10];
static int book[]=new int[10];
static int n=0;
static void dfs(int step)//step表示出现在第几个盒子里面前
{
int i;
if(step==n+1)//如果站在第n+1个盒子面前,则表示前n个盒子已经放好扑克牌、
{
for(i=1;i<n;i++)
System.out.println(""+a[i]);
System.out.println();//System.out.print();
return;//返回之前的一步(最近一次调用dfs方法的地方)
}
//此时葬在第step个盒子面前,应该放哪张牌呢?
//按照1、2、3……n的顺序一一尝试
for(i=1;i<n;i++) {
//判断扑克牌i是否在手上
if(book[i]==0)//book[i]=0表示i号扑克牌在手上
{//开始尝试使用扑克牌i是否在手上
a[step]=i;//将i号扑克牌放入到第step个盒子中
book[i]=1;//将book[i]设为1,表示i号扑克牌已经不再手上
//第step个盒子已经放好扑克牌,接下来需要走到下一个盒子面前
dfs(step+1);//这里通过函数的递归调用来实现(自己调用自己)
book[i]=0;//这是非常重要的一步,一定要将刚才尝试的扑克牌收回,才能进行下一次尝试
}
}//先执行什么?//二分搜索也是类似的答案,一步执行一步
return;
}
public static void main(String args[]) {
Scanner ms=new Scanner(System.in);
/* System.out.println("输入一个整数:");*/
int n=ms.nextInt();
dfs(1);
getchar();getchar(); }
private static void getchar() {
// TODO Auto-generated method stub }
}

题目:输入一个数n:输出1~n的全排列,从·c语言到Java过渡。


 package Mypackage;
import java.util.Scanner;
public class 全排列{
static int a[]=new int[10];
static int book[]=new int[10];
static int n=0;
static void dfs(int step)//step表示出现在第几个盒子里面前
{
int i;
if(step==n+1)//如果站在第n+1个盒子面前,则表示前n个盒子已经放好扑克牌、
{
for(i=1;i<n;i++)
System.out.println(""+a[i]);
System.out.println();//System.out.print();
return;//返回之前的一步(最近一次调用dfs方法的地方)
}
//此时葬在第step个盒子面前,应该放哪张牌呢?
//按照1、2、3……n的顺序一一尝试
for(i=1;i<n;i++) {
//判断扑克牌i是否在手上
if(book[i]==0)//book[i]=0表示i号扑克牌在手上
{//开始尝试使用扑克牌i是否在手上
a[step]=i;//将i号扑克牌放入到第step个盒子中
book[i]=1;//将book[i]设为1,表示i号扑克牌已经不再手上
//第step个盒子已经放好扑克牌,接下来需要走到下一个盒子面前
dfs(step+1);//这里通过函数的递归调用来实现(自己调用自己)
book[i]=0;//这是非常重要的一步,一定要将刚才尝试的扑克牌收回,才能进行下一次尝试
}
}//先执行什么?//二分搜索也是类似的答案,一步执行一步
return;
}
public static void main(String args[]) {
Scanner ms=new Scanner(System.in);
/* System.out.println("输入一个整数:");*/
int n=ms.nextInt();
dfs(1);
getchar();getchar(); }
private static void getchar() {
// TODO Auto-generated method stub }
}

 
package Mypackage;
import java.util.Scanner;
public class 全排列{
static int a[]=new int[10];
static int book[]=new int[10];
static int n=0;
static void dfs(int step)//step表示出现在第几个盒子里面前
{
int i;
if(step==n+1)//如果站在第n+1个盒子面前,则表示前n个盒子已经放好扑克牌、
{
for(i=1;i<n;i++)
System.out.println(""+a[i]);
System.out.println();//System.out.print();
return;//返回之前的一步(最近一次调用dfs方法的地方)
}
//此时葬在第step个盒子面前,应该放哪张牌呢?
//按照1、2、3……n的顺序一一尝试
for(i=1;i<n;i++) {
//判断扑克牌i是否在手上
if(book[i]==0)//book[i]=0表示i号扑克牌在手上
{//开始尝试使用扑克牌i是否在手上
a[step]=i;//将i号扑克牌放入到第step个盒子中
book[i]=1;//将book[i]设为1,表示i号扑克牌已经不再手上
//第step个盒子已经放好扑克牌,接下来需要走到下一个盒子面前
dfs(step+1);//这里通过函数的递归调用来实现(自己调用自己)
book[i]=0;//这是非常重要的一步,一定要将刚才尝试的扑克牌收回,才能进行下一次尝试
}
}//先执行什么?//二分搜索也是类似的答案,一步执行一步
return;
}
public static void main(String args[]) {
Scanner ms=new Scanner(System.in);
/* System.out.println("输入一个整数:");*/
int n=ms.nextInt();
dfs(1);
getchar();getchar(); }
private static void getchar() {
// TODO Auto-generated method stub }
}

只有输入没有输出是怎么回事,请求大家的解答

深度搜索优先(全排列)//本内容来自《啊哈!算法》或者英文名《Aha!Algorithms》)的更多相关文章

  1. #C++初学记录(深度搜索#递归)

    深度搜索 走地图的题目是深度搜索里比较容易理解的题目,更深层次的是全排列和七皇后等经典题目,更加难以理解,代码比较抽象. 题目:红与黑 蒜厂有一间长方形的房子,地上铺了红色.黑色两种颜色的正方形瓷砖. ...

  2. Linux如何搜索查找文件里面内容

    在Linux系统当中,如何搜.索查找文件里面的内容呢? 这个应该是系统维护.管理当中遇到最常见的需求.那么下面介绍,总结一下如何搜索.查找文件当中的内容. 搜索.查找文件当中的内容,一般最常用的是gr ...

  3. F - 蜘蛛牌(深度搜索)

    Problem Description 蜘蛛牌是windows xp操作系统自带的一款纸牌游戏,游戏规则是这样的:只能将牌拖到比她大一的牌上面(A最小,K最大),如果拖动的牌上有按顺序排好的牌时,那么 ...

  4. 题目--oil Deposits(油田) 基础DFS(深度搜索)

    上一次基本了解了下BFS,这次又找了个基本的DFS题目来试试水,DFS举个例子来说就是 一种从树的最左端开始一直搜索到最底端,然后回到原端再搜索另一个位置到最底端,也就是称为深度搜索的DFS--dep ...

  5. 2018ICPC徐州区域赛网络赛B(逆序枚举或者正序深度搜索)

    #include<bits/stdc++.h>using namespace std;int n,m,k,l;int x[1007],y[1007],z[1007];int dp[1007 ...

  6. [LeetCode] Populating Next Right Pointers in Each Node 深度搜索

    Given a binary tree struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *nex ...

  7. [LeetCode] Balanced Binary Tree 深度搜索

    Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced binary ...

  8. [LeetCode] Convert Sorted List to Binary Search Tree DFS,深度搜索

    Given a singly linked list where elements are sorted in ascending order, convert it to a height bala ...

  9. [LeetCode] Maximum Depth of Binary Tree dfs,深度搜索

    Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along the long ...

随机推荐

  1. 实战ELK(3) Kibana安装与简单实用

    第一步:下载 https://artifacts.elastic.co/downloads/kibana/kibana-6.5.1-x86_64.rpm 第二步:安装 1.安装 yum install ...

  2. C#操作IIS程序池及站点的创建配置(转)

      原文:http://www.cnblogs.com/wujy/archive/2013/02/28/2937667.html 最近在做一个WEB程序的安装包:对一些操作IIS进行一个简单的总结:主 ...

  3. Java面试——线程池

    1.类比介绍 假如有一个工厂,工厂里面有10个工人,每个工人同时只能做一件任务. 因此只要当10个工人中有工人是空闲的,来了任务就分配给空闲的工人做: 当10个工人都有任务在做时,如果还来了任务,就把 ...

  4. 关于IE 浏览器的position居中定位的问题和 行块元素的设置问题

    这两天在写页面时,遇到一些IE浏览器显示不正常的问题,主要有两个: 1. 在td 中设置span 元素水平垂直居中,在谷歌浏览器中可以正常显示,但是在IE 中却无法显示出想要的结果,即不能实现垂直水平 ...

  5. DOM+position:relative+缓冲运动

    一.nodeType节点类型 nodeType==3  ->文本节点 nodeType==1  ->元素节点 for(var i=0;i<oUl.childNodes.length; ...

  6. 【395】yield 和 yield from

    yield:生成器 yield from:将生成器 yield 的内容相当于逐一在 yield 一般 参考:Python 3: Using "yield from" in Gene ...

  7. [Shell]Bash变量:数值运算及运算符

    ------------------------------------------------------------------------------------------------- Sh ...

  8. 关于Encode in UTF-8 without BOM

    定义BOM(Byte Order Mark),字节顺序标记,出现在文本文件头部,Unicode编码标准中用于标识文件是采用哪种格式的编码.它的编码是FEFF. 说明 在 UTF-8 文件中放置 BOM ...

  9. tfs填坑那些事

    1.csdn下载  安装(步1:装 步2:激活 步3:配置数据库之类 选择完全配置)激活(win7能出来,win10不出来) 注意 tfs服务开启,,代理服务开启 2.选择敏捷模板 3.无法新建项目, ...

  10. js计算base64文件流大小

    getImgSize(str) { //获取base64图片大小,返回KB数字 var str = base64url.replace('data:image/jpeg;base64,', '');/ ...