NOI2.5 1490:A Knight's Journey
来源:互联网 发布:spycall软件多少钱 编辑:程序博客网 时间:2024/06/05 03:38
The knight is getting bored of seeing the same black and white squares again and again and has decided to make a journey
around the world. Whenever a knight moves, it is two squares in one direction and one square perpendicular to this. The world of a knight is the chessboard he is living on. Our knight lives on a chessboard that has a smaller area than a regular 8 * 8 board, but it is still rectangular. Can you help this adventurous knight to make travel plans?
Problem
Find a path such that the knight visits every square once. The knight can start and end on any square of the board.
If no such path exist, you should output impossible on a single line.
31 12 34 3
Scenario #1:A1Scenario #2:impossibleScenario #3:A1B3C1A2B4C2A3B1C3A4B2C4
题目大意:给定棋盘长和宽,一马从左上角开始,问能否遍历棋盘,如果能,输出字典序最小的路径,如果不能,输出“impossible”这道题很像马走日(我的博客里有),只是要输出路径,还要字典序最小的,所以要注意这匹马优先选择的走法,其他没什么难度
代码如下:
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;int k,m,n,w[8]={-1,1,-2,2,-2,2,-1,1},u[8]={-2,-2,-1,-1,1,1,2,2};//注意这里的优先选择路径int a[1001][2];int v[100][100];bool check(int x,int y){if(x>=1&&x<=m&&y>=1&&y<=n&&!v[x][y])return 1;return 0;}void find(int x,int y,int s){int i;if(k==0){a[s][0]=x;a[s][1]=y;if(s==m*n){k=1;return;}}for(i=0;i<8;i++)if(check(x+w[i],y+u[i])){v[x][y]=1;find(x+w[i],y+u[i],s+1);v[x][y]=0;}}int main(){int i,j,p;scanf("%d",&p);for(i=0;i<p;i++){k=0;scanf("%d%d",&m,&n);find(1,1,1);printf("Scenario #%d:\n",i+1);if(k==0)printf("impossible\n\n");else{for(j=1;j<=m*n;j++)printf("%c%d",a[j][1]+64,a[j][0]);printf("\n\n");}}}
难度不大,注意细节 2 0
- NOI2.5 1490:A Knight's Journey
- A Knight's Journey
- A Knight's Journey
- A knight's journey
- A Knight's Journey
- A Knight's Journey
- A Knight's Journey
- A Knight's Journey
- A Knight's Journey
- A Knight's Journey
- A Knight's Journey
- A Knight's Journey
- A Knight's Journey
- A Knight's Journey
- A Knight's Journey
- A Knight's Journey
- A Knight's Journey
- A Knight's Journey
- CF 540D. Bad Luck Island 概率dp
- Not supported for DML operations [ UPDATE ltd.miku.xxx.xxx SET xxxxxxx
- rvm 安装 ruby 之后,必须执行 /bin/bash --login 才能执行 ruby 命令
- Mac下ReactNative的环境搭建
- shell 指定列相除
- NOI2.5 1490:A Knight's Journey
- .idea目录加入ignored config无效的解决办法
- VAssistX 使用方法
- UVALive4987-Evacuation Plan(dp + 贪心)
- window 上安装 Scala教程
- 老江湖的世界我不懂,简单版“苹果秋季发布会前瞻”
- 阿里、Facebook、Cloudera等巨头的数据收集框架全攻略
- vxworks记录
- Redis使用入门(一)【配置文件】