北京林业大学“计蒜客”杯程序设计竞赛 网络赛 马踏棋盘的问题
来源:互联网 发布:侠盗飞车5mac版 编辑:程序博客网 时间:2024/05/22 08:05
//使用bfs#include<stdio.h>#include<iostream>#include<utility>#include<queue>#include<string.h>using namespace std;char a[100][100];int d[100][100]; //存放从起点开始到达每个点所用步数 ,同时也可标记该点有没有走过 int n, m;int dx[] = {-1,-2,-2, -1, 1, 2, 2, 1};int dy[] = {-2, -1, 1, 2, 2, 1, -1, -2};int sx, sy;int rx, ry;typedef pair<int , int> P;int bfs();int isOk(int x, int y); int isOk(int x, int y){ if((x >= 0 && x < n) &&(y >= 0 && y < m) && d[x][y] == -1 && a[x][y] != '#') return 1; return 0;}int bfs(){ queue<P> que; int i; que.push(P(sx, sy)); d[sx][sy] = 0; //不断循环直到队列的长度为零 while(que.size()) { int nx, ny; P p = que.front(); que.pop(); // printf("出栈(%d,%d)\n", p.first, p.second); if(a[p.first][p.second] == 'e') { break; } for(i = 0; i < 8; i++) { nx = p.first + dx[i]; ny = p.second + dy[i]; // printf("%d, %d\n", nx, ny); if(isOk(nx, ny)) { if((i == 1 || i == 2) && a[p.first-1][p.second] == '#') continue; else if((i == 3 || i == 4) && a[p.first][p.second+1] == '#') continue; else if((i == 5 || i == 6) && a[p.first+1][p.second] == '#') continue; else if((i == 7 || i == 0) && a[p.first][p.second-1] == '#') continue; que.push(P(nx, ny)); if(nx == 1 && ny == 0 ) { printf("i = %d, %c\n", i, a[nx][ny-1]); } printf("入栈(%d,%d)\n", nx, ny); d[nx][ny] = d[p.first][p.second]+1; } } } return d[rx][ry]; }int main(void){ sx = 0; sy = 0; int i = 0, j =0 ; while(scanf("%d%d", &n, &m) != EOF) { getchar(); for(i = 0; i < n; i++) { for(j = 0; j <m; j++) { a[i][j] = getchar(); } getchar(); } rx = n-1; ry = m-1; memset(d, -1, sizeof(d)); d[sx][sy] = 0; int res = bfs(); printf("%d\n", res); } return 0;}
0 0
- 北京林业大学“计蒜客”杯程序设计竞赛 网络赛 马踏棋盘的问题
- 北京林业大学“计蒜客”杯程序设计竞赛 网络赛
- 北京林业大学“计蒜客”杯程序设计竞赛 网络赛
- 北京林业大学“计蒜客”杯程序设计竞赛 网络赛 A. 喝酒
- 北京林业大学“计蒜客”杯程序设计竞赛 网络赛 . candy
- 北京林业大学“计蒜客”杯程序设计竞赛 网络赛 乘电梯
- 北京林业大学“计蒜客”杯程序设计竞赛 网络赛 总结
- 北京林业大学“计蒜客”杯程序设计竞赛 网络赛 A. 喝酒
- 北京林业大学“计蒜客”杯程序设计竞赛 网络赛 A-喝酒【模拟】
- 北京林业大学“计蒜客”杯程序设计竞赛 网络赛 C-Candy【模拟】
- 北京林业大学“计蒜客”杯程序设计竞赛 网络赛 G. 易彰彪的一张表 (KMP)
- 北京林业大学“计蒜客”杯程序设计竞赛 网络赛 G. 易彰彪的一张表
- 字符串 —— 北京林业大学“计蒜客”杯程序设计竞赛 网络赛 —— 易彰彪的一张表
- 北京林业大学“计蒜客”杯程序设计竞赛 网络赛--易彰彪的一张表
- 北京林业大学“计蒜客”杯程序设计竞赛 网络赛 B. 大钉骑马走江湖 (广搜)
- 北京林业大学 “计蒜客”杯程序设计竞赛 网络赛 B. 大钉骑马走江湖 BFS
- 北京林业大学“计蒜客”杯程序设计竞赛 网络赛 A题 换瓶盖
- BFS — 北京林业大学“计蒜客”杯程序设计竞赛 网络赛 —— 大钉骑马走江湖
- 一夜爆红的程序员神助,竟然是它!
- qt的addWidget、setColumnStretch 等的使用方法
- 剑指offer 数组中出现次数超过一半的数字
- java金额类计算封装
- HTML学习笔记
- 北京林业大学“计蒜客”杯程序设计竞赛 网络赛 马踏棋盘的问题
- gulp详细入门教程
- BI Automation Framework
- 对“视觉机器学习20讲配套仿真代码”的研究心得---Random Forest
- 51nod 1076 2条不相交的路径(tarjan)
- CSDN博客如何上传图片
- Centos上pytest环境搭建
- 数据结构算法——单链表的三种插入
- RCNN学习笔记(4):fast rcnn