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. windows注册表解析说明

    https://www.cnblogs.com/wfq9330/p/9176654.html

  2. model.form使用,配合form的钩子

    一次model.form的使用记录,配合form钩子的过程 在写信息采集功能的时候,需要添加资产信息,使用modelform组件减少工作量 官网介绍:版本1.9.https://docs.django ...

  3. css选择器querySelectorAll

    * querySelectorAll(css的选择器)* 通过css的选择器获取到的一组元素* 获取的也是类数组** 主语* document 从整个页面去获取一组元素* 父级 从父级下去获取一组元素 ...

  4. 详解网络传输中的三张表,MAC地址表、ARP缓存表以及路由表

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://dengqi.blog.51cto.com/5685776/1223132 一:M ...

  5. jQuery获取URL中的参数

    //获取URL地址栏中的参数 function getUrlParam(name) { var reg = new RegExp("(^|&)" + name + &quo ...

  6. 网络抓包工具 wireshark 入门教程

    Wireshark Wireshark(前称Ethereal)是一个网络数据包分析软件.网络数据包分析软件的功能是截取网络数据包,并尽可能显示出最为详细的网络数据包数据.Wireshark使用WinP ...

  7. python入门(七):字符串

    1.字符串类型: >>> s="早上好"               #str类型的字符串 >>> type(s) <class 'str ...

  8. win10系统goole浏览器安装postMan插件

    1. 首先是下载PostMan工具,可以通过谷歌插件网站查询下载postman插件工具.解压文件 2. 解压压缩包 3. 修改_metadata文件重命名为metadata文件,保存待用.修改后为: ...

  9. MySQL的安装流程与入门

    MySQl是一种关系型数据库,存放的是文字数据,它是以“表”的形式进行存储的.由于MySQl的实用性和不收费,它在世界上是应用最多的数据库,但是,它不支持大量数据写入.接下来,我将为大家分享一下我学习 ...

  10. springboot读取配置注解@ConfiguratioinProperties和@Value的区别