(搜索)跳棋系列2
来源:互联网 发布:python命令行参数解析 编辑:程序博客网 时间:2024/04/28 19:55
跳棋#2
TimeLimit: 1 Second MemoryLimit: 32 Megabyte
Description
9 9
0 0 0 0 0 2 2 0 0
2 2 2 0 2 0 0 0 0
0 2 0 0 2 0 0 2 0
2 3 2 2 0 0 0 0 0
0 2 2 0 0 0 0 2 0
0 2 0 0 0 0 0 2 0
0 0 2 2 0 2 2 0 0
0 2 0 0 2 0 2 0 0
0 0 0 0 0 0 2 0 0
Sample Output
0 1 0 0 1 2 2 1 0
2 2 2 0 2 0 0 0 0
0 2 0 0 2 0 0 2 0
2 3 2 2 1 0 0 1 0
0 2 2 0 0 0 0 2 0
0 2 0 0 2 0 0 2 0
0 1 2 2 1 2 2 1 0
0 2 0 0 2 0 2 0 0
TimeLimit: 1 Second MemoryLimit: 32 Megabyte
Description
大家都玩过跳棋的游戏吧,正常的跳棋游戏能隔子往6个方向跳,在本题中只能隔两个子往4个 方向跳,即前后左右4个方向。 如图,3代表要跳的棋子,2代表普通的棋子,1代表棋子3能跳到的位置,0代表空地。 0 0 1 2 2 1 2 2 1 0 0 2 0 0 2 0 0 2 0 0 2 0 0 2 0 0 2 2 2 3 2 2 1 0 0 1 0 0 2 2 0 0 0 0 0 0 0 2 0 0 0 0 0 0 现在需要你设计程序求出棋子3能跳到的位置。
有多组数据,每组数据第一行是两个整数5<=n,m<=100,接下来n行每行m个数,保证只 有一个3,其余的只有2和0。数字之间有空格。
输出n行每行m个数,代表棋盘的状态,数字与数字之间要求有空格,每行最后一个数字后不 许有空格。
9 9
0 0 0 0 0 2 2 0 0
2 2 2 0 2 0 0 0 0
0 2 0 0 2 0 0 2 0
2 3 2 2 0 0 0 0 0
0 2 2 0 0 0 0 2 0
0 2 0 0 0 0 0 2 0
0 0 2 2 0 2 2 0 0
0 2 0 0 2 0 2 0 0
0 0 0 0 0 0 2 0 0
Sample Output
0 1 0 0 1 2 2 1 0
2 2 2 0 2 0 0 0 0
0 2 0 0 2 0 0 2 0
2 3 2 2 1 0 0 1 0
0 2 2 0 0 0 0 2 0
0 2 0 0 2 0 0 2 0
0 1 2 2 1 2 2 1 0
0 2 0 0 2 0 2 0 0
0 0 0 0 0 0 2 0 0
#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int MAXN = 110;int n, m;int Graph[MAXN][MAXN];void DFS(int a, int b){ Graph[a][b] = 1; if(a >= 3 && Graph[a-1][b] == 2 && Graph[a-2][b] == 2 && Graph[a-3][b] == 0) DFS(a-3, b); if(a + 3 < n && Graph[a+1][b] == 2 && Graph[a+2][b] == 2 && Graph[a+3][b] == 0) DFS(a+3, b); if(b >= 3 && Graph[a][b-1] == 2 && Graph[a][b-2] == 2 && Graph[a][b-3] == 0) DFS(a, b-3); if(b + 3 < n && Graph[a][b+1] == 2 && Graph[a][b+2] == 2 && Graph[a][b+3] == 0) DFS(a, b+3);}int main(){ while(~scanf("%d %d", &n, &m)) { int iStartx, iStarty; for(int i = 0; i < n; ++i) { for(int j = 0; j < m; ++j) { scanf("%d", &Graph[i][j]); if(Graph[i][j] == 3) iStartx = i, iStarty = j; } } DFS(iStartx, iStarty); Graph[iStartx][iStarty] = 3; for(int i = 0; i < n; ++i) { for(int j = 0; j < m-1; ++j) printf("%d ", Graph[i][j]); printf("%d\n", Graph[i][m-1]); } } return 0;}
0 0
- (搜索)跳棋系列2
- (搜索) 跳棋系列1
- (搜索)跳棋系列3
- (搜索)跳棋系列4
- (搜索)跳棋系列5
- (搜索)跳棋系列6
- (搜索)跳棋系列7
- (搜索) 跳棋系列9
- 跳棋
- 跳棋
- 跳棋
- 跳棋
- 跳棋
- 跳棋
- 8跳棋(1)90跳棋(2)221跳棋(3)
- C++搜索与回溯算法之跳棋的挑战
- ElasticSearch 2 - 深入搜索系列
- 225中国跳棋(2)227(3)
- 设计包含min函数的栈
- 【BZOJ】【P3110】【ZJOI2013】【K大数查询】【题解】【树套树】
- js打印出对象的结构
- 谈谈异或加密
- BUPT Summer Journey #test9 D
- (搜索)跳棋系列2
- UVA - 10785 The Mad Numerologist
- 八皇后与回溯法
- 问题集
- POJ1523 SPF 割点
- FPGA机器学习之龙星计划机器学习第十二堂
- java中==和equal的区别
- js 获取中文字符串首字母 兼容英文字符串
- jtag 笔记