UVa 439 Knight Moves
来源:互联网 发布:淘宝未激活官换机 编辑:程序博客网 时间:2024/06/05 10:54
#include<stdio.h>#define N 8int vis[N][N];int step[N][N];int dx[8] = {1,2,2,1,-1,-2,-2,-1};int dy[8] = {2,1,-1,-2,-2,-1,1,2};int bfs(int x, int y, int target){ int front = 0, rear = 0, u, d; int q[70]; u = N * x + y; if(u == target) return 0; step[x][y] = 0; q[rear++] = u; while(front < rear) { u = q[front++]; x = u/N; y = u%N; for(d = 0; d < 8; d++) { int nx = x + dx[d], ny = y + dy[d]; if(nx >= 0 && nx < N && ny >= 0 && ny < N && vis[nx][ny] == 0) { if(nx * N + ny == target) return step[x][y] + 1; q[rear++] = nx * N + ny; vis[nx][ny] = 1; step[nx][ny] = step[x][y] + 1; } } }}void ReadInput(){ char start[3], end[3]; while(scanf("%s%s", start, end) == 2) { int x = start[0] - 'a'; int y = start[1] - '1'; int ex = end[0] - 'a'; int ey = end[1] - '1'; memset(vis, 0, sizeof(vis)); memset(step, 0, sizeof(step)); printf("To get from %s to %s takes %d knight moves.\n",start,end,bfs(x,y,ex*N+ey)); }}
0 0
- uva 439 knight moves
- uva 439 - Knight Moves
- uva 439 - Knight Moves
- uva 439 - Knight Moves
- uva 439 - Knight Moves
- uva-439 - Knight Moves
- UVa 439 - Knight Moves
- UVa 439 - Knight Moves
- UVA 439 - Knight Moves
- uva 439 Knight Moves
- UVa 439 - Knight Moves
- uva 439 - Knight Moves
- UVa:439 Knight Moves
- uva 439 - Knight Moves
- uva 439 Knight Moves
- UVa 439 - Knight Moves
- uva 439 - Knight Moves
- UVA 439 - Knight Moves
- 空间(space)
- Linux开发中,make命令的使用
- Elasticsearch基础教程
- HTML5 WebSocket+Tomcat实现真●Web版即时聊天室(单人+多人)
- 消息循环与Looper
- UVa 439 Knight Moves
- 苹果开发 笔记(80)升级IOS 9 和 XCode 7 引起的问题记录
- 在Android Studio里导入library(以github里的SlidingMenu为例),jar包及so的步骤
- archlinux 时间同步问题
- Java Lambda表达式
- 5499 SDOI
- DSP/BIOS入门
- 单链表链式结构的创建
- xcode4中build Settings常见参数解析