题意:

给出一张n*m的图,‘.’代表空地,‘X’代表障碍,给出贪吃蛇的起始位置,给出贪吃蛇的行进路线(由‘U’、‘D’、‘L’和‘R’组成),贪吃蛇在行进的时候是沿着某个方向一直前进,直至碰到障碍物(‘X’或者贪吃蛇的身体),问它的行进路线是否合法,是否可以覆盖所有的点。

思路:

模拟,数据只有10*10,怎么都不会超时,用vis[]记录那些点不能走即可。

代码:

#include<cstdio>
#include<cstring>
#include<climits>
#include<cmath>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#include<string>
#include<queue>
#include<map>
#include<vector>
#include<set>
#include<sstream>using namespace std;char dir[10000];
char g[30][30];
int vis[30][30];
int n,m;int check(int x,int y)
{if(x<1||x>n||y<1||y>m)return 0;else if(vis[x][y]==1)return 0;return 1;
}int wx,wy;
void dfs(int x,int y,char c)
{if(c=='U'){for(int i=x-1;i>=0;i--){//printf("----%d %d\n",i,y);if(check(i,y))vis[i][y]=1;else{wx=i+1;wy=y;//printf("*****%d %d\n",wx,wy);return ;}}}else if(c=='D'){for(int i=x+1;i<=n+1;i++){if(check(i,y))vis[i][y]=1;else{wx=i-1;wy=y;return ;}}}else if(c=='L'){for(int i=y-1;i>=0;i--){if(check(x,i))vis[x][i]=1;else{wx=x;wy=i+1;return ;}}}else{for(int i=y+1;i<=m+1;i++){if(check(x,i))vis[x][i]=1;else{wx=x;wy=i-1;return ;}}}
}int main()
{//freopen("in.txt","r",stdin);int cas=1;while(scanf("%d%d",&n,&m)!=EOF){memset(vis,0,sizeof vis);for(int i=1;i<=n;i++)scanf("%s",g[i]+1);//        for(int i=1;i<=n;i++)
//        {
//            for(int j=1;j<=m;j++)
//                printf("%c",g[i][j]);
//            puts("");
//        }for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)if(g[i][j]=='X')vis[i][j]=1;int sx,sy;scanf("%d%d",&sx,&sy);sx+=1;sy+=1;scanf("%s",dir);if(!check(sx,sy))printf("Case #%d: invalid starting point\n",cas++);else{int len=strlen(dir);int flag=0;for(int i=0;i<len;i++){// printf("sx=%d sy=%d dir=%c\n",sx,sy,dir[i]);vis[sx][sy]=1;dfs(sx,sy,dir[i]);//  printf("wx=%d wy=%d\n",wx,wy);if(sx==wx&&sy==wy){printf("Case #%d: invalid move at (%d,%d)\n",cas++,wx-1,wy-1);flag=1;break;}else{sx=wx;sy=wy;}}if(!flag){int tmp=0;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){if(vis[i][j]==1)tmp++;}}int res=n*m-tmp;if(res==0)printf("Case #%d: correct\n",cas++);elseprintf("Case #%d: %d more free grid(s)\n",cas++,res);}}}return 0;
}

hust1343(贪吃蛇模拟)相关推荐

  1. [蓝桥杯2017初赛]贪吃蛇长度-模拟(水题)

    题目描述 小明在爷爷的私人收藏馆里找到一台老式电脑.居然没有图形界面,只能用控制台编程. 经过小明的一阵摸索,神奇地设计出了控制台上的贪食蛇游戏. 如下图,是游戏时画面截图. 其中,H表示蛇头,T表示 ...

  2. python贪吃蛇控制台_如何用Python写一个贪吃蛇AI

    前言 这两天在网上看到一张让人涨姿势的图片,图片中展示的是贪吃蛇游戏, 估计大部分人都玩过.但如果仅仅是贪吃蛇游戏,那么它就没有什么让人涨姿势的地方了. 问题的关键在于,图片中的贪吃蛇真的很贪吃XD, ...

  3. python贪吃蛇_如何用Python写一个贪吃蛇?

    阅读文本大概需要 5 分钟 作者:Hawstein http://hawstein.com/2013/04/15/snake-ai/ 前言 这两天在网上看到一张让人涨姿势的图片,图片中展示的是贪吃蛇游 ...

  4. POJ1324贪吃蛇(状态压缩广搜)

    题意:       给你一个地图,有的地方能走,有的地方不能走,然后给你一条蛇,问你这条蛇的头部走到1,1的位置的最少步数,注意,和贪吃蛇不太一样,就是蛇咬到自己身体的那个地方,具体怎么不一样自己模拟 ...

  5. 贪吃蛇程序设计报告python_20192116 2019-2020-2 《Python程序设计》实验四报告

    20192116 2019-2020-2 <Python程序设计>实验四报告 课程:<Python程序设计> 班级: 1921 姓名: 饶欢 学号:20192116 实验教师: ...

  6. 寻路算法实例解析:贪吃蛇AI的实现

    本文是寻路算法的实际应用篇,以贪吃蛇的实现为例子. 1.首先看下这个在微博上很火的贪吃蛇gif 这次我们尝试用代码来模拟下,说不定上面这个图就是计算机搞的. 2.讲贪吃蛇snake AI之前,我们先看 ...

  7. 耗时两年,19岁小伙采用230片纯74逻辑芯片搭建出32位Risc-V处理器!可玩贪吃蛇...

    来源:机器之心编译   编辑:杜伟 昨天发了一篇关于纯手工制作CPU的文章,看来大家都十分感兴趣: B站焊武帝爆火出圈:纯手工拼晶体管自制CPU,耗时半年,可跑程序! 如果你想自己DIY CPU,第一 ...

  8. java贪吃蛇_如何用Java还原童年回忆?在线教你完成贪吃蛇小游戏

    今天我就从零开始来完成这个小游戏,完成的方式也是一步一步的添加功能这样的方式来实现. 额,不好意思,放错了,重来 第一步完成的功能:写一个界面 大家见到的贪吃蛇小游戏,界面肯定是少不了的.因此,第一步 ...

  9. linux嵌入式贪吃蛇

    目标:用游戏手柄控制贪吃蛇 硬件平台:imax6q 版本信息: arm-none-linux-gnueabi-gcc-4.8.3. qt5.7.1.linux3.0.1 一.交叉编译tslib1.4 ...

最新文章

  1. SQL Server中如何取得刚插入的标识值
  2. matlab中的神经网络训练,MATLAB中的神经网络训练
  3. 最实用的Git命令总结:新建本地分支、远程分支、关联和取消关联分支、清除本地和远程分支、合并分支、版本还原、tag命令、中文乱码解决方案、如何fork一个分支和修改后发起合并请求
  4. django-数据库的操作-原始版本-表格的查询
  5. c语言无法打开源文件stdafx.h,vs2010 中无法打开 源文件 stdafx.h 未定义标识符 “xxx”...
  6. max os取消开机启动
  7. position 属性和 z-index 属性对页面节点层级影响的例子
  8. (day 12 - 双指针)剑指 Offer 22. 链表中倒数第k个节点
  9. ajax验证作用,通过正则表达式使用ajax检验注册信息功能
  10. Mujoco制作模拟视频
  11. java 期刊杂志参考_参考文献可以引用整本期刊杂志吗?格式怎么写?
  12. M5311模组烤机测试装置(Arduino)
  13. java web查询某个时间段记录
  14. Pyinstaller库的安装和使用用于生成可执行文件exe
  15. 微博登陆爬取用户影响力
  16. 金融用户画像项目总结
  17. 修复系统错误,如msvcp110.dll丢失,directX错误等
  18. 终端进程启动失败: shell 可执行文件“C:\instaillSpace\Git\bin\bash.exe”的路径
  19. [问题解决] 西部数据硬盘 mac 无法写入
  20. 投资策略主题报告:水落归槽~2021年A股增量资金展望总量篇20210108.PDF

热门文章

  1. [云炬WEB实战笔记]批量修改WordPress文章时间按天递增
  2. [云炬python3玩转机器学习笔记] 2-1机器学习基础概念
  3. 那年的12月,那些悟与思2018-12-23
  4. 吴恩达《Machine Learning》精炼笔记 10:异常检测
  5. connection getconnection()为什么要关闭_为什么转速低于600r/min排汽缸喷水要自动关闭_搜狐汽车...
  6. python从random生成列表_Python 学习DAY 17 列表生成式,生成器,迭代器,time模块,random模块...
  7. 系统间通信2:通信管理与远程方法调用RMI
  8. Adaboost(自适应提升树)算法原理
  9. 高级C语言教程-存储器和指针
  10. 详解语义分割评价指标