c 数据算法参考书本 跳斑马
2016-02-27 00:35
344 查看
#include <stdio.h> #include <stdlib.h> #define X 8 #define Y 8 int chess[X][Y]; int nextxy(int *x, int *y, int conut) { switch (conut) { case 0: if (*x + 2 <= X - 1 && *y - 1 >= 0 && chess[*x + 2][*y - 1] == 0) { *x = *x + 2; *y = *y - 1; return 1; } break; case 1: if (*x + 2 <= X - 1 && *y +1 <=Y-1 &&chess[*x + 2][*y+1] == 0) { *x = *x +2; *y = *y +1; return 1; } break; case 2: if (*x + 1 <= X - 1 && *y - 2 >=0 && chess[*x + 1][*y -2] == 0) { *x = *x + 1; *y = *y - 2; return 1; } break; case 3: if (*x + 1 <=X-1 && *y +2 <=Y-1 && chess[*x +1][*y +2] == 0) { *x = *x +1; *y = *y +2; return 1; } break; case 4: if (*x - 2 >= 0 && *y - 1>=0 && chess[*x - 2][*y -1] == 0) { *x = *x - 2; *y = *y - 1; return 1; } break; case 5: if (*x - 2 >= 0 && *y +1 <=Y-1 && chess[*x - 2][*y +1] == 0) { *x = *x - 2; *y = *y+1; return 1; } break; case 6: if (*x - 1 >= 0 && *y - 2 >=0&& chess[*x - 1][*y - 2] == 0) { *x = *x - 1; *y = *y -2; return 1; } break; case 7: if (*x - 1 >= 0 && *y+2 <= Y - 1 && chess[*x - 1][*y + 2] == 0) { *x = *x - 1; *y = *y + 2; return 1; } break; } return 0; } int TravelChessBoard(int x, int y, int tag) { int x1 = x, y1 = y, flag = 0, conut = 0; chess[x][y] = tag; if (tag == X*Y) return 1; flag = nextxy(&x1, &y1, conut); while (flag == 0 && conut < 7) { conut = conut += 1; flag = nextxy(&x1, &y1, conut); } while (flag) { if (TravelChessBoard(x1, y1, tag + 1)) { return 1; } x1 = x; y1 = y; conut = conut + 1; flag = nextxy(&x1, &y1, conut); while (flag == 0 && conut < 7) { conut = conut + 1; flag = nextxy(&x1, &y1, conut); } } if (!flag) chess[x][y] = 0; return 0; } void main111() { int i, j; for (i = 0; i < X;i++) for (j = 0; j < Y; j++) chess[i][j] = 0; if (TravelChessBoard(2, 0, 1)) { for (i = 0; i < X; i++) { for (j = 0; j < Y; j++) printf("%4d", chess[i][j]); printf("\n"); } printf("The horse has travelled the chess borad\n"); } else printf("The horse cannot travel the chess boarf\n"); getchar(); system("pause"); }
相关文章推荐
- win7 破解激活工具--windows loader
- iOS 根据经纬度获取地名,根据地名获取经纬度
- GlusterFS分布式文件系统快速管理
- 初学Phaser.js之碰撞检测
- POJ 3261 Milk Patterns(二分+后缀数组)
- log的简单说明
- [Locked] Group Shifted Strings
- 为MacOS X创建.bash_profile
- 备注 break continue return
- 垃圾回收器Garbage Collector
- 面向对象
- centos下安装SS5服务器
- processing 常用代码片段(持续更新)
- javamail 关于SSL的问题找了我一个星期之久
- 几种常用的正则表达式[转]
- jquery textSearch实现页面搜索 注意!!!!调用这个插件后,js事件绑定如,on、bind、live delegate全部失效,折腾了我一整天!!!
- Unity3d MonoBehaviour 的可重写函数整理
- JavaMail发送和接收邮件
- leetcode 130 Surrounded Regions(BFS)
- Unity3d中的属性(Attributes)整理