链接:http://cerberus.delos.com:791/usacoprob2?S=snail&a=uzElkgTaI9d

描述:有障碍的棋盘上的搜索,求从左上角出发最多经过多少个格子。

思路:暴搜

我的实现:

  1. 1 /*
  2. 2 ID:zhangyi20
  3. 3 PROG:snail
  4. 4 LANG:C++
  5. 5 */
  6. 6 #include <iostream>
  7. 7 #include <cstdio>
  8. 8 #include <cmath>
  9. 9 using namespace std;
  10. 10 #define MaxN 120
  11. 11 int N,B;
  12. 12 int mat[MaxN+5][MaxN+5];//0空地 1障碍 2走过
  13. 13 int Dfs(int i,int j,int Dir)//方向:0向上,1向右,2向下,3向左
  14. 14 {
  15. 15 mat[i][j]=2;
  16. 16 int Ret=0,i_=i,j_=j;
  17. 17 int tmp1=-1,tmp2=-1;
  18. 18 if(Dir==0)//向上
  19. 19 {
  20. 20 for(i=i-1; ;--i,++Ret)
  21. 21 {
  22. 22 if(mat[i][j])
  23. 23 break;
  24. 24 mat[i][j]=2;
  25. 25 }
  26. 26 if(mat[i][j]==1)//转向
  27. 27 {
  28. 28 if(mat[i+1][j-1])
  29. 29 tmp1=0;
  30. 30 else
  31. 31 tmp1=Dfs(i+1,j,3);
  32. 32 if(mat[i+1][j+1])
  33. 33 tmp2=0;
  34. 34 else
  35. 35 tmp2=Dfs(i+1,j,1);
  36. 36 Ret+=max(tmp1,tmp2);
  37. 37 }
  38. 38 for(i=i+1;i<=i_;++i)
  39. 39 mat[i][j]=0;
  40. 40 }
  41. 41 else if(Dir==1)//向右
  42. 42 {
  43. 43 for(j=j+1; ;++j,++Ret)
  44. 44 {
  45. 45 if(mat[i][j])
  46. 46 break;
  47. 47 mat[i][j]=2;
  48. 48 }
  49. 49 if(mat[i][j]==1)//转向
  50. 50 {
  51. 51 if(mat[i-1][j-1])
  52. 52 tmp1=0;
  53. 53 else
  54. 54 tmp1=Dfs(i,j-1,0);
  55. 55 if(mat[i+1][j-1])
  56. 56 tmp2=0;
  57. 57 else
  58. 58 tmp2=Dfs(i,j-1,2);
  59. 59 Ret+=max(tmp1,tmp2);
  60. 60 }
  61. 61 for(j=j-1;j>=j_;--j)
  62. 62 mat[i][j]=0;
  63. 63 }
  64. 64 else if(Dir==2)//向下
  65. 65 {
  66. 66 for(i=i+1; ;++i,++Ret)
  67. 67 {
  68. 68 if(mat[i][j])
  69. 69 break;
  70. 70 mat[i][j]=2;
  71. 71 }
  72. 72 if(mat[i][j]==1)//转向
  73. 73 {
  74. 74 if(mat[i-1][j-1])
  75. 75 tmp1=0;
  76. 76 else
  77. 77 tmp1=Dfs(i-1,j,3);
  78. 78 if(mat[i-1][j+1])
  79. 79 tmp2=0;
  80. 80 else
  81. 81 tmp2=Dfs(i-1,j,1);
  82. 82 Ret+=max(tmp1,tmp2);
  83. 83 }
  84. 84 for(i=i-1;i>=i_;--i)
  85. 85 mat[i][j]=0;
  86. 86 }
  87. 87 else//向左
  88. 88 {
  89. 89 for(j=j-1; ;--j,++Ret)
  90. 90 {
  91. 91 if(mat[i][j])
  92. 92 break;
  93. 93 mat[i][j]=2;
  94. 94 }
  95. 95 if(mat[i][j]==1)//转向
  96. 96 {
  97. 97 if(mat[i-1][j+1])
  98. 98 tmp1=0;
  99. 99 else
  100. 100 tmp1=Dfs(i,j+1,0);
  101. 101 if(mat[i+1][j+1])
  102. 102 tmp2=0;
  103. 103 else
  104. 104 tmp2=Dfs(i,j+1,2);
  105. 105 Ret+=max(tmp1,tmp2);
  106. 106 }
  107. 107 for(j=j+1;j<=j_;++j)
  108. 108 mat[i][j]=0;
  109. 109 }
  110. 110 return Ret;
  111. 111 }
  112. 112 int main()
  113. 113 {
  114. 114 freopen("snail.in","r",stdin);
  115. 115 freopen("snail.out","w",stdout);
  116. 116 scanf("%d%d",&N,&B);
  117. 117 int i,j;
  118. 118 char c;
  119. 119 for(i=1;i<=B;++i)
  120. 120 {
  121. 121 do
  122. 122 {
  123. 123 scanf("%c",&c);
  124. 124 }while(c<'A'||c>'Z');
  125. 125 scanf("%d",&j);
  126. 126 mat[j][c-'A'+1]=1;
  127. 127 }
  128. 128 for(i=1;i<=N;++i)
  129. 129 mat[0][i]=mat[N+1][i]=mat[i][0]=mat[i][N+1]=1;//给地图四周打上障碍
  130. 130 mat[1][1]=2;
  131. 131 printf("%d\n",max(Dfs(1,1,1),Dfs(1,1,2))+1);
  132. 132 return 0;
  133. 133 }

[题解]USACO 5.2.1 Snail Trails的更多相关文章

  1. USACO 5.2 Snail Trails

    Snail TrailsAll Ireland Contest Sally Snail likes to stroll on a N x N square grid (1 <n <= 12 ...

  2. 洛谷——P1560 [USACO5.2]蜗牛的旅行Snail Trails

    P1560 [USACO5.2]蜗牛的旅行Snail Trails 题目描述 萨丽·斯内尔(Sally Snail,蜗牛)喜欢在N x N 的棋盘上闲逛(1 < n <= 120). 她总 ...

  3. 洛谷 P1560 [USACO5.2]蜗牛的旅行Snail Trails(不明原因的scanf错误)

    P1560 [USACO5.2]蜗牛的旅行Snail Trails 题目描述 萨丽·斯内尔(Sally Snail,蜗牛)喜欢在N x N 的棋盘上闲逛(1 < n <= 120). 她总 ...

  4. [题解]USACO 1.3 Ski Course Design

    Ski Course Design Farmer John has N hills on his farm (1 <= N <= 1,000), each with an integer ...

  5. [题解]USACO 1.3 Wormholes

    Wormholes Farmer John's hobby of conducting high-energy physics experiments on weekends has backfire ...

  6. 洛谷 P1560 [USACO5.2]蜗牛的旅行Snail Trails

    题目链接 题解 一看题没什么思路.写了个暴力居然可过?! Code #include<bits/stdc++.h> #define LL long long #define RG regi ...

  7. [USACO5.2]蜗牛的旅行Snail Trails(有条件的dfs)

    题目描述 萨丽·斯内尔(Sally Snail,蜗牛)喜欢在N x N 的棋盘上闲逛(1 < n <= 120). 她总是从棋盘的左上角出发.棋盘上有空的格子(用“.”来表示)和B 个路障 ...

  8. 题解 [USACO Mar08] 奶牛跑步

    [USACO Mar08] 奶牛跑步 Description Bessie准备用从牛棚跑到池塘的方法来锻炼. 但是因为她懒,她只准备沿着下坡的路跑到池塘,然后走回牛棚. Bessie也不想跑得太远,所 ...

  9. [USACO5.2]Snail Trails

    嘟嘟嘟 一道很水的爆搜题,然后我调了近40分钟…… 错误:输入数据最好用cin,因为数字可能不止一位,所以用scanf后,单纯的c[0]为字母,c[1]数字………………………… #include< ...

随机推荐

  1. ThinkPad S5立体声混响以及语音识别

    smartaudio里面改成语音识别就可以是立体声混响了.但是微软语音识别在国内依然不好用,微软服务在国内太卡了. (联想总是多此一举,各种乱起八糟的软件,给用户造成困难,以前老机子驱动无线网卡锁在L ...

  2. thrift基础知识

    1. 架构图 Thrift 包含一个完整的堆栈结构用于构建客户端和服务器端.下图描绘了 Thrift 的整体架构. 图 1. 架构图 如图所示,图中黄色部分是用户实现的业务逻辑,褐色部分是根据 Thr ...

  3. gin中使用路由组

    package main import ( "github.com/gin-gonic/gin" ) func main() { router := gin.Default() / ...

  4. ajax返回获取的值在其他地方获取

    继续上个问题的后续问题,因为要获取token进行身份验证,但是又不想写死token值,通过以下方式解决: 1.定义一个分离出来的方法. 2.定义一个全局变量.局部变量. 3.把ajax改成同步的.as ...

  5. 不难懂------react---Immutable的基本使用

    一.Immutable简介 Immutable Data 就是一旦创建,就不能再被更改的数据.对 Immutable 对象的任何修改或添加删除操作都会返回一个新的 Immutable 对象.Immut ...

  6. 一 简单介绍aws。

    aws入门 一 什么是aws? /* 概念: AWS就是 Amazon Web Servies, 亚马逊云计算服务平台. 是一款云服务. */ 二 aws可以做什么? // 可以在aws,创建我们需要 ...

  7. ApacheCN 数据科学译文集 20210313 更新

    新增了五个教程: Python 和 Jupyter 机器学习入门 零.前言 一.Jupyter 基础知识 二.数据清理和高级机器学习 三.Web 爬取和交互式可视化 Python 数据科学和机器学习实 ...

  8. 【第十四期】高德go面经

    自我介绍 选一个比较熟悉的项目讲讲 筛选日志的时候,日志格式是不一样的,你们是如何处理的? 处理日志的时候如果日志量比较大会堆积吗?怎么处理的? 日志落盘到机器上,是如何采集的? 采集服务有问题的话可 ...

  9. Ubuntu下Java JDK安装

    1.仓库安装 待更新 2.手动安装 1.下载linux平台sdk. 官网:https://www.oracle.com/technetwork/java/javase/downloads/index. ...

  10. 自动归档autoArchive By H.l

    写点简单的代码,让开发更简单 详情:ios 应用实现快速的临时缓存之模型的自动归档 Demo:https://files.cnblogs.com/files/sixindev/AutoArchiver ...