POJ 2488 A Knight's Journey
2015-06-26 17:31
225 查看
//简单的对8种状态的搜索
//做好标记 可以说是回溯的吧
import java.util.*;
public class Main{
static Scanner inScanner=new Scanner(System.in);
static int p,q;
static final int N=27;
static int a_x[]=new int[]{-1,1,-2,2,-2,2,-1,1};
static int a_y[]=new int[]{-2,-2,-1,-1,1,1,2,2};
static boolean test;
static boolean[][] biao=new boolean
;
private static class Node{
int x,y;
Node(int x,int y){
this.x=x;
this.y=y;
}
}
static Node[] road=new Node[N*N+1];
static boolean isOver(int x,int y){
if(x>p||x<=0||y>q||y<=0)
return true;
return false;
}
static boolean dfs(int n,int x,int y){
if(n>p*q){
int j;
for(j=1;j<=p*q;j++){
System.out.print((char)(road[j].y+'A'-1)+""+road[j].x);
}
System.out.println();
return true;
}
int i;
for(i=0;i<8;i++){
int tempx,tempy;
tempx=x+a_x[i];
tempy=y+a_y[i];
if(!isOver(tempx, tempy)&&!biao[tempx][tempy]){
biao[tempx][tempy]=true;
road
=new Node(tempx, tempy);
if(dfs(n+1, tempx, tempy))
return true;
biao[tempx][tempy]=false;
}
}
return false;
}
public static void main(String[] args) {
while(inScanner.hasNext()){
int num=inScanner.nextInt();
for(int i=1;i<=num;i++){
p=inScanner.nextInt();
q=inScanner.nextInt();
test=true;
for(int k=0;k<N;k++)
for(int f=0;f<N;f++)
biao[k][f]=false;
System.out.println("Scenario #"+i+":");
biao[1][1]=true;
road[1]=new Node(1, 1);
if(!dfs(2, 1, 1))
System.out.println("impossible");
System.out.println();
}
}
}
}
//做好标记 可以说是回溯的吧
import java.util.*;
public class Main{
static Scanner inScanner=new Scanner(System.in);
static int p,q;
static final int N=27;
static int a_x[]=new int[]{-1,1,-2,2,-2,2,-1,1};
static int a_y[]=new int[]{-2,-2,-1,-1,1,1,2,2};
static boolean test;
static boolean[][] biao=new boolean
;
private static class Node{
int x,y;
Node(int x,int y){
this.x=x;
this.y=y;
}
}
static Node[] road=new Node[N*N+1];
static boolean isOver(int x,int y){
if(x>p||x<=0||y>q||y<=0)
return true;
return false;
}
static boolean dfs(int n,int x,int y){
if(n>p*q){
int j;
for(j=1;j<=p*q;j++){
System.out.print((char)(road[j].y+'A'-1)+""+road[j].x);
}
System.out.println();
return true;
}
int i;
for(i=0;i<8;i++){
int tempx,tempy;
tempx=x+a_x[i];
tempy=y+a_y[i];
if(!isOver(tempx, tempy)&&!biao[tempx][tempy]){
biao[tempx][tempy]=true;
road
=new Node(tempx, tempy);
if(dfs(n+1, tempx, tempy))
return true;
biao[tempx][tempy]=false;
}
}
return false;
}
public static void main(String[] args) {
while(inScanner.hasNext()){
int num=inScanner.nextInt();
for(int i=1;i<=num;i++){
p=inScanner.nextInt();
q=inScanner.nextInt();
test=true;
for(int k=0;k<N;k++)
for(int f=0;f<N;f++)
biao[k][f]=false;
System.out.println("Scenario #"+i+":");
biao[1][1]=true;
road[1]=new Node(1, 1);
if(!dfs(2, 1, 1))
System.out.println("impossible");
System.out.println();
}
}
}
}
相关文章推荐
- 使用popen()执行shell命令并获取内容
- 【Walk on】我仅仅想留下点东西
- c# 判断网络地址是否存在
- 单例模式
- Android Studio学习配置-SDK Manger镜像源设置,不用翻墙也能飞速下载sdk
- 设计模式之单例模式
- Myeclipse字体大小设置
- 基于社交网络的情绪化分析I
- python编程练习
- web project-点击链接并跳转及struts配置示例
- 边缘方向直方图matlab实现
- linux环境配置samba服务总结
- An error occurred while filtering resources-----maven项目报错
- SQL Server中字符串函数LEN 和 DATALENGTH辨析
- python选择排序实现与C选择排序实现
- CMake的CTest方法
- Python的getattr(),setattr(),delattr(),hasattr()
- MyBatis单一和批量操作数据库SQL
- [SoapUI] 怎样确定一个应答报文的格式是不是标准的JSON
- MFC消息映射及消息处理函数原型