FZU-1892(bfs)接水管游戏
#include<stdio.h>
#include<string.h>
#include<queue>using namespace std;const int maxn = 50+5;struct node
{int x;int y;int step;
};
int N,ei,ej,si,sj;
int vis[maxn][maxn];
int dir[4][2] = {{0,1},{1,0},{0,-1},{-1,0}}; //记录对应编号的方向
int mp[maxn][maxn];void init()
{memset(mp,0,sizeof(mp));memset(vis,0,sizeof(vis));
}
bool ok(int x,int y,int k)
{if(x >= N || y >= N || x < 0 || y < 0) return false;//流出边界了int di = 1<<k;if(!(mp[x][y]&di)) return false; //这里!优先级大于&,所以要!(...)return true;
}int bfs(int x,int y)
{struct node cur,next;queue<node> q;int ans = 0;cur.x = x;cur.y = y;cur.step = 0;q.push(cur);vis[x][y] = 1;int mstep = 1e9+5;//相当于取无穷while(!q.empty()){cur = q.front();q.pop();if(cur.step >= mstep) break;//如果在这一步已经有其他节点流出或到终点了,就不用拓展它的子节点了(因为流出的那一步的子节点肯定不流过了)for(int i = 0;i < 4;i++){if((1<<i)&mp[cur.x][cur.y]){next.x = cur.x+dir[i][0];next.y = cur.y+dir[i][1];if((next.x == ei && next.y == ej) || !ok(next.x,next.y,(i+2)%4)) //可以手算一下感受为什么是(i+2)%4;{mstep = cur.step+1; //因为流出或到终点了,记录流出的是第几步continue;}if(!vis[next.x][next.y]) //这些节点都是成立的{vis[next.x][next.y] = 1;next.step = cur.step+1;q.push(next);ans++;}}}}return ans;
}
int main()
{//freopen("in.txt","r",stdin);int T;scanf("%d",&T);while(T--){init();scanf("%d",&N);for(int i = 0;i < N;i++){for(int j = 0;j < N;j++){scanf("%d",&mp[i][j]);if(mp[i][j]&32){ei = i;ej=j;mp[i][j] -= 32;}else if(mp[i][j]&16){si = i;sj = j;mp[i][j] -= 16;}//printf("%d ",mp[i][j]);}//printf("\n");}printf("%d\n",bfs(si,sj));}return 0;
}
FZU-1892(bfs)接水管游戏相关推荐
- ACM之八数码问题----BFS搜索----数独游戏的模拟(下)
题目描述;数独游戏的内核代码 八数码问题; 编号为1到8的8个正方形滑块被摆成3行3列;(有一个格子留空); 每次可以把与空格相邻的滑块(有公共边才算相邻)移到空格中; 而它原来的位置就成为了新的空格 ...
- DFS、BFS实例(啊哈算法)
DFS: A.将n张不同的牌放入n个箱子里,一个箱子一张牌,总共几种方法? 思路:此处一共分为四步操作: 1.按规定顺序放牌入箱子里(这里规定放牌的顺序从小到大) 2.人在箱子间的移动(step++) ...
- cocos2d-js 游戏源码
四款不同类型的游戏 完整的项目 https://github.com/QQ951127336/Game_byJavaScript 10秒内吃萝卜 /*** Created by 95112 on 20 ...
- 经典好玩的休闲游戏大合集,免费玩
中日大海战 操作指南:与电脑进行对战,首页是摆阵(注意:摆完后就不能移动了),然后开战,你是看不到电脑方的船只的,只靠运气打对方阵地,如果击 中就会有提示,然后估计对方摆阵位置继续发炮,直到没击中对方 ...
- Java-小游戏-炸弹人-课程设计-搜索算法
项目链接:Java小游戏-炸弹人-课程设计-论文-AI-其他文档类资源-CSDN下载Java小游戏-炸弹人-课程设计-论文-AI-其他文档类资源-CSDN下载项目描述:https://blog.csd ...
- 计蒜客:迷宫(二)---bfs
计蒜客:bfs求解迷宫游戏 题目描述: 蒜头君在你的帮助下终于逃出了迷宫,但是蒜头君并没有沉浸于喜悦之中,而是很快的又陷入了思考,从这个迷宫逃出的最少步数是多少呢? 输入格式 第一行输入两个整数 nn ...
- while True learn()全金牌通关秘籍
以下为最初几关的金牌通关秘籍,不继续更的原因是:这个游戏本质上就是套着机器学习外壳的水管游戏,涉及知识点的内容仅有几篇推荐给你的文章,游戏核心不涉及机器学习. 所以想单纯学习机器学习的没必要玩这个游戏 ...
- 行测-判断推理-图形推理-样式规律-特殊规律-其他规律
每一列的笔画数分别为1 2 3 4 选D 每一行四个数的和都为26 选C 也可通过图中的数字为1~10 选11和12 相同位置的元素要相同 选B 每次改变一根线,就像接水管游戏 选C 笔画数之和 列1 ...
- 大力飞砖之暴力解法(上)
文章目录 前言 全排列 皇后问题 题目 规则 策略 判断条件 放置判断 找到解的判断 解题代码 搜索问题 暴力递归版 DFS 优化 BFS 优化 博弈游戏 题目 前言 暴力算法,你永远可以相信,理论上 ...
最新文章
- KNN分类器、最近邻分类、KD树、KNN分类的最佳K值、基于半径的最近邻分类器、KNN多分类、KNN多标签分类、KNN多输出分类、KNN分类的优缺点
- matlab计时,暂停
- 利用规则引擎计算个人所得税学习
- 对计算机图形学知识总结第二版,计算机图形学入门总结!
- 2019.3.2 区块链论文翻译
- 2015.5.28 面试题1:赋值运算符函数
- 【日程发布】LiveVideoStackCon 音视频技术大会 2022 上海站
- python函数名与变量名可以一样吗_python--第一类对象,函数名,变量名
- java爬取button_学习使用Java的webmagic框架爬取网页内容
- Redis 系列之CentOS下Redis的安装
- iis p访问php密码,访问IIS网站需要输入用户名密码(非匿名登录)问题汇总
- C++学生信息管理系统5.0
- 肯定存在无摩擦力的材料
- python for line in file 只能读取一遍
- gem5——向简单脚本中添加缓存
- [树 乱搞] BZOJ 4238 电压
- 制作角色血条 [代码清单10-2]
- 运维是不是IT行业里技术含量最低的岗位?
- 垂杨柳中学2021年高考成绩查询时间,2021年中考成绩
- solidity 循环语句
热门文章
- 用电脑自带的“画图”调整图片大小到100K以下
- 美妆电商跌宕十年,跨境模式能否让其重新崛起?
- 使用APICloud AVM框架开发预约应用
- QQ宠物炫也有免费午餐---谁说全是收费?(转)
- 华工的计算机专业硕士就业前景,这所热门地区的985就业率排名第一!不想了解下吗?...
- 以管理为轴心 为IT服务保驾护航——北京赛特百货有限公司
- 网际,MAC,DNS,僵木蠕,木马,APT,dns隐蔽隧道,.pcap,开源情报,元数据,带外管理,磁盘阵列RAID,DRAC,ARP,充分必要条件
- 66 道前端算法面试题附思路分析助你查漏补缺
- 突破中国品牌创新技术实力,TCL做对了什么?
- 串口打印中文乱码及注释乱码问题