第一次写题解,本人菜鸟中的菜菜鸟,因为没找到题解,想写一个给大家参考参考。
题意:接水管,每流过一个节点分数加1,到达终点或者水流出就终止,输出分数。一看就是bfs,但是要注意流出边界的情况
AC代码:
#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)接水管游戏相关推荐

  1. ACM之八数码问题----BFS搜索----数独游戏的模拟(下)

    题目描述;数独游戏的内核代码 八数码问题; 编号为1到8的8个正方形滑块被摆成3行3列;(有一个格子留空); 每次可以把与空格相邻的滑块(有公共边才算相邻)移到空格中; 而它原来的位置就成为了新的空格 ...

  2. DFS、BFS实例(啊哈算法)

    DFS: A.将n张不同的牌放入n个箱子里,一个箱子一张牌,总共几种方法? 思路:此处一共分为四步操作: 1.按规定顺序放牌入箱子里(这里规定放牌的顺序从小到大) 2.人在箱子间的移动(step++) ...

  3. cocos2d-js 游戏源码

    四款不同类型的游戏 完整的项目 https://github.com/QQ951127336/Game_byJavaScript 10秒内吃萝卜 /*** Created by 95112 on 20 ...

  4. 经典好玩的休闲游戏大合集,免费玩

    中日大海战 操作指南:与电脑进行对战,首页是摆阵(注意:摆完后就不能移动了),然后开战,你是看不到电脑方的船只的,只靠运气打对方阵地,如果击 中就会有提示,然后估计对方摆阵位置继续发炮,直到没击中对方 ...

  5. Java-小游戏-炸弹人-课程设计-搜索算法

    项目链接:Java小游戏-炸弹人-课程设计-论文-AI-其他文档类资源-CSDN下载Java小游戏-炸弹人-课程设计-论文-AI-其他文档类资源-CSDN下载项目描述:https://blog.csd ...

  6. 计蒜客:迷宫(二)---bfs

    计蒜客:bfs求解迷宫游戏 题目描述: 蒜头君在你的帮助下终于逃出了迷宫,但是蒜头君并没有沉浸于喜悦之中,而是很快的又陷入了思考,从这个迷宫逃出的最少步数是多少呢? 输入格式 第一行输入两个整数 nn ...

  7. while True learn()全金牌通关秘籍

    以下为最初几关的金牌通关秘籍,不继续更的原因是:这个游戏本质上就是套着机器学习外壳的水管游戏,涉及知识点的内容仅有几篇推荐给你的文章,游戏核心不涉及机器学习. 所以想单纯学习机器学习的没必要玩这个游戏 ...

  8. 行测-判断推理-图形推理-样式规律-特殊规律-其他规律

    每一列的笔画数分别为1 2 3 4 选D 每一行四个数的和都为26 选C 也可通过图中的数字为1~10 选11和12 相同位置的元素要相同 选B 每次改变一根线,就像接水管游戏 选C 笔画数之和 列1 ...

  9. 大力飞砖之暴力解法(上)

    文章目录 前言 全排列 皇后问题 题目 规则 策略 判断条件 放置判断 找到解的判断 解题代码 搜索问题 暴力递归版 DFS 优化 BFS 优化 博弈游戏 题目 前言 暴力算法,你永远可以相信,理论上 ...

最新文章

  1. KNN分类器、最近邻分类、KD树、KNN分类的最佳K值、基于半径的最近邻分类器、KNN多分类、KNN多标签分类、KNN多输出分类、KNN分类的优缺点
  2. matlab计时,暂停
  3. 利用规则引擎计算个人所得税学习
  4. 对计算机图形学知识总结第二版,计算机图形学入门总结!
  5. 2019.3.2 区块链论文翻译
  6. 2015.5.28 面试题1:赋值运算符函数
  7. 【日程发布】LiveVideoStackCon 音视频技术大会 2022 上海站
  8. python函数名与变量名可以一样吗_python--第一类对象,函数名,变量名
  9. java爬取button_学习使用Java的webmagic框架爬取网页内容
  10. Redis 系列之CentOS下Redis的安装
  11. iis p访问php密码,访问IIS网站需要输入用户名密码(非匿名登录)问题汇总
  12. C++学生信息管理系统5.0
  13. 肯定存在无摩擦力的材料
  14. python for line in file 只能读取一遍
  15. gem5——向简单脚本中添加缓存
  16. [树 乱搞] BZOJ 4238 电压
  17. 制作角色血条 [代码清单10-2]
  18. 运维是不是IT行业里技术含量最低的岗位?
  19. 垂杨柳中学2021年高考成绩查询时间,2021年中考成绩
  20. solidity 循环语句

热门文章

  1. 用电脑自带的“画图”调整图片大小到100K以下
  2. 美妆电商跌宕十年,跨境模式能否让其重新崛起?
  3. 使用APICloud AVM框架开发预约应用
  4. QQ宠物炫也有免费午餐---谁说全是收费?(转)
  5. 华工的计算机专业硕士就业前景,这所热门地区的985就业率排名第一!不想了解下吗?...
  6. 以管理为轴心 为IT服务保驾护航——北京赛特百货有限公司
  7. 网际,MAC,DNS,僵木蠕,木马,APT,dns隐蔽隧道,.pcap,开源情报,元数据,带外管理,磁盘阵列RAID,DRAC,ARP,充分必要条件
  8. 66 道前端算法面试题附思路分析助你查漏补缺
  9. 突破中国品牌创新技术实力,TCL做对了什么?
  10. 串口打印中文乱码及注释乱码问题