hust1343(贪吃蛇模拟)
题意:
给出一张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(贪吃蛇模拟)相关推荐
- [蓝桥杯2017初赛]贪吃蛇长度-模拟(水题)
题目描述 小明在爷爷的私人收藏馆里找到一台老式电脑.居然没有图形界面,只能用控制台编程. 经过小明的一阵摸索,神奇地设计出了控制台上的贪食蛇游戏. 如下图,是游戏时画面截图. 其中,H表示蛇头,T表示 ...
- python贪吃蛇控制台_如何用Python写一个贪吃蛇AI
前言 这两天在网上看到一张让人涨姿势的图片,图片中展示的是贪吃蛇游戏, 估计大部分人都玩过.但如果仅仅是贪吃蛇游戏,那么它就没有什么让人涨姿势的地方了. 问题的关键在于,图片中的贪吃蛇真的很贪吃XD, ...
- python贪吃蛇_如何用Python写一个贪吃蛇?
阅读文本大概需要 5 分钟 作者:Hawstein http://hawstein.com/2013/04/15/snake-ai/ 前言 这两天在网上看到一张让人涨姿势的图片,图片中展示的是贪吃蛇游 ...
- POJ1324贪吃蛇(状态压缩广搜)
题意: 给你一个地图,有的地方能走,有的地方不能走,然后给你一条蛇,问你这条蛇的头部走到1,1的位置的最少步数,注意,和贪吃蛇不太一样,就是蛇咬到自己身体的那个地方,具体怎么不一样自己模拟 ...
- 贪吃蛇程序设计报告python_20192116 2019-2020-2 《Python程序设计》实验四报告
20192116 2019-2020-2 <Python程序设计>实验四报告 课程:<Python程序设计> 班级: 1921 姓名: 饶欢 学号:20192116 实验教师: ...
- 寻路算法实例解析:贪吃蛇AI的实现
本文是寻路算法的实际应用篇,以贪吃蛇的实现为例子. 1.首先看下这个在微博上很火的贪吃蛇gif 这次我们尝试用代码来模拟下,说不定上面这个图就是计算机搞的. 2.讲贪吃蛇snake AI之前,我们先看 ...
- 耗时两年,19岁小伙采用230片纯74逻辑芯片搭建出32位Risc-V处理器!可玩贪吃蛇...
来源:机器之心编译 编辑:杜伟 昨天发了一篇关于纯手工制作CPU的文章,看来大家都十分感兴趣: B站焊武帝爆火出圈:纯手工拼晶体管自制CPU,耗时半年,可跑程序! 如果你想自己DIY CPU,第一 ...
- java贪吃蛇_如何用Java还原童年回忆?在线教你完成贪吃蛇小游戏
今天我就从零开始来完成这个小游戏,完成的方式也是一步一步的添加功能这样的方式来实现. 额,不好意思,放错了,重来 第一步完成的功能:写一个界面 大家见到的贪吃蛇小游戏,界面肯定是少不了的.因此,第一步 ...
- linux嵌入式贪吃蛇
目标:用游戏手柄控制贪吃蛇 硬件平台:imax6q 版本信息: arm-none-linux-gnueabi-gcc-4.8.3. qt5.7.1.linux3.0.1 一.交叉编译tslib1.4 ...
最新文章
- SQL Server中如何取得刚插入的标识值
- matlab中的神经网络训练,MATLAB中的神经网络训练
- 最实用的Git命令总结:新建本地分支、远程分支、关联和取消关联分支、清除本地和远程分支、合并分支、版本还原、tag命令、中文乱码解决方案、如何fork一个分支和修改后发起合并请求
- django-数据库的操作-原始版本-表格的查询
- c语言无法打开源文件stdafx.h,vs2010 中无法打开 源文件 stdafx.h 未定义标识符 “xxx”...
- max os取消开机启动
- position 属性和 z-index 属性对页面节点层级影响的例子
- (day 12 - 双指针)剑指 Offer 22. 链表中倒数第k个节点
- ajax验证作用,通过正则表达式使用ajax检验注册信息功能
- Mujoco制作模拟视频
- java 期刊杂志参考_参考文献可以引用整本期刊杂志吗?格式怎么写?
- M5311模组烤机测试装置(Arduino)
- java web查询某个时间段记录
- Pyinstaller库的安装和使用用于生成可执行文件exe
- 微博登陆爬取用户影响力
- 金融用户画像项目总结
- 修复系统错误,如msvcp110.dll丢失,directX错误等
- 终端进程启动失败: shell 可执行文件“C:\instaillSpace\Git\bin\bash.exe”的路径
- [问题解决] 西部数据硬盘 mac 无法写入
- 投资策略主题报告:水落归槽~2021年A股增量资金展望总量篇20210108.PDF
热门文章
- [云炬WEB实战笔记]批量修改WordPress文章时间按天递增
- [云炬python3玩转机器学习笔记] 2-1机器学习基础概念
- 那年的12月,那些悟与思2018-12-23
- 吴恩达《Machine Learning》精炼笔记 10:异常检测
- connection getconnection()为什么要关闭_为什么转速低于600r/min排汽缸喷水要自动关闭_搜狐汽车...
- python从random生成列表_Python 学习DAY 17 列表生成式,生成器,迭代器,time模块,random模块...
- 系统间通信2:通信管理与远程方法调用RMI
- Adaboost(自适应提升树)算法原理
- 高级C语言教程-存储器和指针
- 详解语义分割评价指标