比较忙比较累,只贴代码了。


题目:6-4 UVa439 - Knight Moves

  1. //UVa439 - Knight Moves
  2. //Accepted 0.000s
  3. //#define _XIENAOBAN_
  4. #include<iostream>
  5. #include<cstring>
  6. #include<queue>
  7. #define M(po) Map[po.x][po.y]
  8. using namespace std;
  9. struct poi {
  10. int x, y, weight;
  11. poi operator +(const poi &that) const {
  12. return poi{ x + that.x, y + that.y, weight};
  13. }
  14. bool operator ==(const poi &that) const {
  15. return (x == that.x) && (y == that.y);
  16. }
  17. } op, ed;
  18. const poi dir[8] = { { 2,1 },{ -2,1 },{ 2,-1 },{ -2,-1 },{ 1,2 },{ -1,2 },{ 1,-2 },{ -1,-2 } };
  19. bool Map[10][10];
  20. char xstart, ystart, xend, yend;
  21. int xs, ys, xe, ye;
  22. int BFS(){
  23. if (op == ed) return 0;
  24. queue<poi> Q;
  25. Q.push(op);
  26. M(op) = true;
  27. while (!Q.empty()) {
  28. for (int i(0);i < 8;++i){
  29. poi nxt(Q.front() + dir[i]);
  30. if (nxt.x > 0 && nxt.y > 0 && nxt.x < 9 && nxt.y < 9 && !M(nxt)) {
  31. ++nxt.weight;
  32. if (nxt == ed) return nxt.weight;
  33. M(nxt) = true;
  34. Q.push(nxt);
  35. }
  36. }
  37. Q.pop();
  38. }
  39. return -1;
  40. }
  41. int main()
  42. {
  43. #ifdef _XIENAOBAN_
  44. #define gets(T) gets_s(T, 129)
  45. freopen("in.txt", "r", stdin);
  46. //freopen("out.txt", "w", stdout);
  47. #endif
  48. while (scanf("%c%c %c%c", &xstart, &ystart, &xend, &yend) == 4) {
  49. memset(Map, 0, sizeof(Map));
  50. op.x = xstart - 96, op.y = ystart - 48, op.weight = 0;
  51. ed.x = xend - 96, ed.y = yend - 48, ed.weight = 0;
  52. printf("To get from %c%c to %c%c takes %d knight moves.\n", xstart, ystart, xend, yend, BFS());
  53. while (getchar() != '\n');
  54. }
  55. return 0;
  56. }

题目:6-5 UVa1600 - Patrol Robot

  1. //UVa1600 - Patrol Robot
  2. //Accepted 0.000s
  3. //#define _XIENAOBAN_
  4. #include<iostream>
  5. #include<cstring>
  6. #include<queue>
  7. #define DONE 2333333
  8. using namespace std;
  9. struct step { int x, y, k, mov; };
  10. int T, m, n, k;
  11. int Map[24][24],Obst[24][24];
  12. void judge(queue<step> &Q, step &now, int x, int y) {
  13. if (Obst[x += now.x][y += now.y] == DONE) return;
  14. int _k = (Obst[x][y] ? now.k + 1 : 0);
  15. if (_k <= k) {
  16. if (_k) {
  17. if (Map[x][y] && Map[x][y] <= _k) return;
  18. Map[x][y] = _k;
  19. }
  20. else Obst[x][y] = DONE;
  21. Q.push(step{ x, y, _k, now.mov + 1 });
  22. }
  23. }
  24. int main()
  25. {
  26. #ifdef _XIENAOBAN_
  27. #define gets(T) gets_s(T, 129)
  28. freopen("in.txt", "r", stdin);
  29. freopen("out.txt", "w", stdout);
  30. #endif
  31. scanf("%d", &T);
  32. while (T--) {
  33. scanf("%d%d%d", &m, &n, &k);
  34. for (int i(1);i <= m;++i) for (int j(1);j <= n;++j)
  35. scanf("%d", &Obst[i][j]);
  36. memset(Map, 0, sizeof(Map));
  37. queue<step> Q;
  38. Q.push(step{ 1,1,0,0 });
  39. Obst[1][1] = DONE;
  40. while (!Q.empty()) {
  41. step &now(Q.front());
  42. if (now.x == m && now.y == n) break;
  43. if (now.x + 1 <= m) judge(Q, now, 1, 0);
  44. if (now.y + 1 <= n) judge(Q, now, 0, 1);
  45. if (now.x - 1 >= 1) judge(Q, now, -1, 0);
  46. if (now.y - 1 >= 1) judge(Q, now, 0, -1);
  47. Q.pop();
  48. }
  49. if (Q.empty()) printf("-1\n");
  50. else printf("%d\n", Q.front().mov);
  51. }
  52. return 0;
  53. }

[刷题]算法竞赛入门经典(第2版) 6-4/UVa439 6-5/UVa1600的更多相关文章

  1. [刷题]算法竞赛入门经典(第2版) 4-6/UVa508 - Morse Mismatches

    书上具体所有题目:http://pan.baidu.com/s/1hssH0KO 代码:(Accepted,10 ms) //UVa508 - Morse Mismatches #include< ...

  2. [刷题]算法竞赛入门经典(第2版) 5-15/UVa12333 - Revenge of Fibonacci

    题意:在前100000个Fibonacci(以下简称F)数字里,能否在这100000个F里找出以某些数字作为开头的F.要求找出下标最小的.没找到输出-1. 代码:(Accepted,0.250s) / ...

  3. [刷题]算法竞赛入门经典(第2版) 5-13/UVa822 - Queue and A

    题意:模拟客服MM,一共有N种话题,每个客服MM支持处理其中的i个(i < N),处理的话题还有优先级.为了简化流程方便出题,设每个话题都是每隔m分钟来咨询一次.现知道每个话题前来咨询的时间.间 ...

  4. [刷题]算法竞赛入门经典(第2版) 4-5/UVa1590 - IP Networks

    书上具体所有题目:http://pan.baidu.com/s/1hssH0KO 代码:(Accepted,0 ms) //UVa1590 - IP Networks #include<iost ...

  5. [刷题]算法竞赛入门经典(第2版) 6-7/UVa804 - Petri Net Simulation

    题意:模拟Petri网的执行.虽然没听说过Petri网,但是题目描述的很清晰. 代码:(Accepted,0.210s) //UVa804 - Petri Net Simulation //Accep ...

  6. [刷题]算法竞赛入门经典(第2版) 6-6/UVa12166 - Equilibrium Mobile

    题意:二叉树代表使得平衡天平,修改最少值使之平衡. 代码:(Accepted,0.030s) //UVa12166 - Equilibrium Mobile //Accepted 0.030s //# ...

  7. [刷题]算法竞赛入门经典(第2版) 6-1/UVa673 6-2/UVa712 6-3/UVa536

    这三题比较简单,只放代码了. 题目:6-1 UVa673 - Parentheses Balance //UVa673 - Parentheses Balance //Accepted 0.000s ...

  8. [刷题]算法竞赛入门经典(第2版) 5-16/UVa212 - Use of Hospital Facilities

    题意:模拟患者做手术. 其条件为:医院有Nop个手术室.准备手术室要Mop分钟,另有Nre个恢复用的床.准备每张床要Mre分钟,早上Ts点整医院开张,从手术室手术完毕转移到回复床要Mtr分钟.现在医院 ...

  9. [刷题]算法竞赛入门经典(第2版) 5-11/UVa12504 - Updating a Dictionary

    题意:对比新老字典的区别:内容多了.少了还是修改了. 代码:(Accepted,0.000s) //UVa12504 - Updating a Dictionary //#define _XieNao ...

  10. [刷题]算法竞赛入门经典(第2版) 5-10/UVa1597 - Searching the Web

    题意:不难理解,照搬题意的解法. 代码:(Accepted,0.190s) //UVa1597 - Searching the Web //#define _XIENAOBAN_ #include&l ...

随机推荐

  1. Unity 3D Framework Designing(5)——ViewModel之间如何共享数据

    对于客户端应用程序而言,单页应用程序(Single Page Application)是最常见的表现形式.有经验的开发人员往往会把一个View分解多个SubView.那么,如何在多个SubView之间 ...

  2. css实现下拉菜单

    实现一个效果不难,难的是使用最少的代码实现一个效果 <!DOCTYPE html> <html lang="en"> <head> <me ...

  3. JDK中日期和时间的几个常用类浅析(四)

    java.time.Instant   java.time.Instant类对应的是时间线上的一个时间点.该类通过保存着从格林威治的起始时间(1970年一月一日零点零分)开始计算所经过的纳妙数来表示时 ...

  4. dotweb——go语言的一个微型web框架(三)路由注册

    上一章我们讲了如何启动一个dotweb程序,本篇文章将介绍如何注册路由. router是dotweb用来管理路由的结构体,它提供了一些关于路由操作函数. app := dotweb.New() rou ...

  5. sas2ircu工具信息收集及磁盘定位

    最近几台Dell服务器的磁盘损坏,报修厂商之后dell工程师需要手机机器磁盘插槽位置信息,使用的就是sas2ircu工具. 此工具还可以配置RAID信息,但是我这次只需要他的查看信息的功能,下面就开始 ...

  6. div背景图片或颜色不显示的解决办法

    背景图片不显示的原因: 1. css没有被调用 2. css图片地址不对 3. div的高度没有固定,是auto.没有设值或者高度不够 4. div被嵌套 5. div代码不规范 解决办法: (1)D ...

  7. python操作数据库之批量导入

    python操作数据库之批量导入 Python语法简洁清晰,特色之一是强制用空白符(white space)作为语句缩进. Python具有丰富和强大的库.它常被昵称为胶水语言,能够把用其他语言制作的 ...

  8. ng指令控制一个元素的影藏的与显示几种方法的使用

    在ng中我们控制一个元素的显示与隐藏的方法: (1):ng-show=true/false 解释:ng-show使用的是display="block"/"none&quo ...

  9. setInterval定时器

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...

  10. 面试题(一)—Java基础(上)

    1.面向对象的三大特征 (1)封装      封装性指的是隐藏了对象的属性和实现细节,对外仅提供公共的访问方式.      好处: 将变化隔离,提供复用性和安全性. (2)继承      提高代码的复 ...