HDOJ-三部曲一(搜索、数学)- A Knight's Journey
A Knight's Journey
Time Limit : 2000/1000ms (Java/Other) Memory Limit : 131072/65536K (Java/Other)
Total Submission(s) : 51 Accepted Submission(s) : 17

Problem Find a path such that the knight visits every square once. The knight can start and end on any square of the board.
1 1
2 3
4 3
- #include<iostream>
- #include<cstring>
- using namespace std;
- int m,n;
- int c; //已走过的步数
- bool f; //标记是否找到答案了
- int chess[30][30]={0};
- int step[2][8]={{-1, 1,-2, 2,-2,2,-1,1}, //每一种可能的走法,注意要按字典序排列
- {-2,-2,-1,-1, 1,1, 2,2}};
- char ans1[64];
- int ans2[64];
- bool move(int i,int j,int k)
- {
- if(i+step[0][k]>=0&&i+step[0][k]<m&&j+step[1][k]>=0&&j+step[1][k]<n&&!chess[i+step[0][k]][j+step[1][k]])
- {
- chess[i+step[0][k]][j+step[1][k]]=1;
- return true;
- }
- else
- return false;
- }
- void DFS(int i,int j)
- {
- ans1[c]=j+'A';
- ans2[c]=i+1;
- if(c==m*n) //找到结果,回退
- {
- f=true;
- return;
- }
- for(int t=0;t<8;t++) //尝试每一种走法
- {
- if(move(i,j,t))
- {
- c++;
- DFS(i+step[0][t],j+step[1][t]);
- if(c==m*n) //如果找到结果就一直回退
- return;
- chess[i+step[0][t]][j+step[1][t]]=0; //还原
- c--;
- }
- }
- return;
- }
- int main()
- {
- int T;
- cin>>T;
- int t=T;
- while(T--)
- {
- int i,j,k;
- cin>>m>>n;
- for(j=0;j<n;j++)
- {
- for(i=0;i<m;i++)
- {
- c=1;
- memset(chess,0,sizeof(chess));
- chess[i][j]=1;
- f=false;
- DFS(i,j);
- if(f)
- {
- cout<<"Scenario #"<<t-T<<":"<<endl;
- for(k=1;k<=m*n;k++)
- cout<<ans1[k]<<ans2[k];
- cout<<endl;
- break;
- }
- }
- if(f)
- break;
- }
- if(!f)
- {
- cout<<"Scenario #"<<t-T<<":"<<endl;
- cout<<"impossible"<<endl;
- }
- cout<<endl;
- }
- }
HDOJ-三部曲一(搜索、数学)- A Knight's Journey的更多相关文章
- A Knight's Journey 分类: POJ 搜索 2015-08-08 07:32 2人阅读 评论(0) 收藏
A Knight's Journey Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 35564 Accepted: 12119 ...
- POJ2488-A Knight's Journey(DFS+回溯)
题目链接:http://poj.org/problem?id=2488 A Knight's Journey Time Limit: 1000MS Memory Limit: 65536K Tot ...
- POJ 2488 A Knight's Journey(深搜+回溯)
A Knight's Journey Time Limit : 2000/1000ms (Java/Other) Memory Limit : 131072/65536K (Java/Other) ...
- 迷宫问题bfs, A Knight's Journey(dfs)
迷宫问题(bfs) POJ - 3984 #include <iostream> #include <queue> #include <stack> #incl ...
- poj2488 A Knight's Journey裸dfs
A Knight's Journey Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 35868 Accepted: 12 ...
- POJ2488A Knight's Journey[DFS]
A Knight's Journey Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 41936 Accepted: 14 ...
- POJ 2488 A Knight's Journey(DFS)
A Knight's Journey Time Limit: 1000MSMemory Limit: 65536K Total Submissions: 34633Accepted: 11815 De ...
- A Knight's Journey 分类: dfs 2015-05-03 14:51 23人阅读 评论(0) 收藏
A Knight’s Journey Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 34085 Accepted: 11621 ...
- poj2488 A Knight's Journey
A Knight's Journey Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 24840 Accepted: ...
随机推荐
- (24)odoo中模型标识汇总
* 设置->技术->数据结构->模型 模型 模型描述 类型 瞬态模型account.account 科目 基础对象 ...
- 补交git、ssh
本来应该早就应该交的,自己给忘记了,非常抱歉,现在补交上来 词频统计: 代码地址:https://coding.net/u/liuff/p/cipin/git ssh:git@git.coding.n ...
- 补第二周四人小组WBS/NABCD
四人小组项目<东北师范大学论坛> 要求: 1.给出需求概述.功能列表.痛点或亮点.NABCD及WBS模型在此项目中的应用. 2.不熟悉的名词,自行搜索资料并参考教材第393页开始的术语索引 ...
- WPF:ListView数据绑定及Style
DrugRecordsWin.xaml <ListView Grid.Row="4" Grid.Column="1" Name="list_Dr ...
- 字符串匹配的sunday算法
sunday算法核心思想:启发式移动搜索步长! SUNDAY 算法描述: 字符串查找算法中,最著名的两个是KMP算法(Knuth-Morris-Pratt)和BM算法(Boyer-Moore).这里介 ...
- SQL 创建索引的作用以及如何创建索引
SQL 创建索引的作用以及如何创建索引 SQL 创建索引的作用 一.使用索引的优点: 1.通过唯一性索引(unique)可确保数据的唯一性 2.加快数据的检索速度 3.加快表之间的连接 4.减少分组和 ...
- webapi方式
随笔 - 112 文章 - 0 评论 - 334 ASP.NET MVC学习系列(二)-WebAPI请求 继续接着上文 ASP.NET MVC学习系列(一)-WebAPI初探 来看看对于一般前 ...
- 识别低效率的SQL语句
1.返回行与逻辑读的比率 CREATE TABLE t as select * from dba_objects; --CREATE INDEX idx ON t (object_id); ---例1 ...
- subline快捷键
折叠所有代码: 按ctrl+k,再按ctrl+1 展开所有代码: 按ctrl+k,再按ctrl+j 折叠此处代码: ctrl+shift+[ 展开此处代码: ctrl+shift+]
- iis7.5 设置伪静态
1)首先新建一个应用程序池,名称任意,比如:nettest,托管管道模式先暂时设置为集成模式,等下面的一系列设置完成之后再设置成经典模式: 2)部署好站点,并将此站点的应用程序池设置为nettest; ...