深度搜索优先(全排列)//本内容来自《啊哈!算法》或者英文名《Aha!Algorithms》)
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》)的更多相关文章
- #C++初学记录(深度搜索#递归)
深度搜索 走地图的题目是深度搜索里比较容易理解的题目,更深层次的是全排列和七皇后等经典题目,更加难以理解,代码比较抽象. 题目:红与黑 蒜厂有一间长方形的房子,地上铺了红色.黑色两种颜色的正方形瓷砖. ...
- Linux如何搜索查找文件里面内容
在Linux系统当中,如何搜.索查找文件里面的内容呢? 这个应该是系统维护.管理当中遇到最常见的需求.那么下面介绍,总结一下如何搜索.查找文件当中的内容. 搜索.查找文件当中的内容,一般最常用的是gr ...
- F - 蜘蛛牌(深度搜索)
Problem Description 蜘蛛牌是windows xp操作系统自带的一款纸牌游戏,游戏规则是这样的:只能将牌拖到比她大一的牌上面(A最小,K最大),如果拖动的牌上有按顺序排好的牌时,那么 ...
- 题目--oil Deposits(油田) 基础DFS(深度搜索)
上一次基本了解了下BFS,这次又找了个基本的DFS题目来试试水,DFS举个例子来说就是 一种从树的最左端开始一直搜索到最底端,然后回到原端再搜索另一个位置到最底端,也就是称为深度搜索的DFS--dep ...
- 2018ICPC徐州区域赛网络赛B(逆序枚举或者正序深度搜索)
#include<bits/stdc++.h>using namespace std;int n,m,k,l;int x[1007],y[1007],z[1007];int dp[1007 ...
- [LeetCode] Populating Next Right Pointers in Each Node 深度搜索
Given a binary tree struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *nex ...
- [LeetCode] Balanced Binary Tree 深度搜索
Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced binary ...
- [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 ...
- [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 ...
随机推荐
- django之 使用py文件操作django项目中的表
要想在一个另外的py文件中操作django,可以使用如下的代码 import os os.environ.setdefault("DJANGO_SETTINGS_MODULE",' ...
- Redis-Sentinel 数据源配置
1.redis配置文件 : redis.properties # Redis settings #sentinel_node_1 redis.sentinel1.host=192.168.0.1 re ...
- Swift 通过运行时获取属性名列表
import UIKit //必须要有@objcMembers修饰符,否则获取到的成员属性为0 @objcMembers class Person: NSObject { var name: Stri ...
- synchronized 和reentrantlock的优缺点
reentrantlock的优点 可以添加多个检控条件, 如果使用synchronized,则只能使用一个. 使用 reentrant locks 可以有多个wait()/notify() 队列. [ ...
- maven pom.xml 项目报错
Failed to read artifact descriptor for org.springframework.boot:spring-boot-starter-web:jar:2.1.0.RE ...
- Communication Model
[Communication Model] EOSIO actions operate primarily in a message-based communication architecture. ...
- 十六、Mediator 仲载者设计模式
原理: 代码清单: Mediator public interface Mediator { void createColleagues(); void colleagueChanged(); } C ...
- 阿里巴巴Java开发手册与自己开发对照笔记
一编程规约 (一)命名风格 某些时候在命名常量的时候,会觉得太长而减少长度导致命名不清. 抽象类及测试类写得比较少. 这一点值得注意,在开发中,布尔变量我都是使用is开始. 关于包名和类名的单数和复数 ...
- KO ----- 静态资源404问题
--------------------siwuxie095 KO ----- 静态资源 404 问题 在 Spring ...
- 【实习】从ubuntu迁移过来的代码,在centos上编译问题的解决汇总
目前自己的开发环境(同将来线上环境)是centos 7.我这里主要实现服务端.需要组里其他同学提供一个接口(视频编辑).公司内部自己开发环境 通常是台式ubuntu16.04.所以提供视频处理接口是在 ...