一,Corn Maze S

注:这个题目困了我很久,两三天吧,直到今天才搞出来,一直就被卡着数据,然后开始也一直没搞明白题目的意思。

输入格式

第一行:两个用空格隔开的整数 NN 和 MM。

第 2\sim N+12∼N+1 行:第 i+1i+1 行描述了迷宫中的第 ii 行的情况(共有MM个字符,每个字符中间没有空格)。

输出格式

一个整数,表示起点到出口所需的最短时间。

题意翻译

奶牛们去一个 N\times MN×M 玉米迷宫,2 \leq N \leq 300,2 \leq M \leq3002≤N≤300,2≤M≤300。

迷宫里有一些传送装置,可以将奶牛从一点到另一点进行瞬间转移。这些装置可以双向使用。

如果一头奶牛处在这个装置的起点或者终点,这头奶牛就必须使用这个装置。

玉米迷宫除了唯一的一个出口都被玉米包围。

迷宫中的每个元素都由以下项目中的一项组成:

  1. 玉米,# 表示,这些格子是不可以通过的。
  2. 草地,. 表示,可以简单的通过。
  3. 传送装置,每一对大写字母 \tt{A}A 到 \tt{Z}Z 表示。
  4. 出口,= 表示。
  5. 起点, @ 表示

奶牛能在一格草地上可能存在的四个相邻的格子移动,花费 11 个单位时间。从装置的一个结点到另一个结点不花时间。

输入输出样例

输入 #1复制

5 6
###=##
#.W.##
#.####
#.@W##
######

输出 #1复制

3

说明/提示

例如以下矩阵,N=5,M=6N=5,M=6。

###=##
#.W.##
#.####
#.@W##
######

唯一的一个装置的结点用大写字母 \tt{W}W 表示。

最优方案为:先向右走到装置的结点,花费一个单位时间,再到装置的另一个结点上,花费 00 个单位时间,然后再向右走一个,再向上走一个,到达出口处,总共花费了 33 个单位时间。

分析:

1,因为是求最短时间所以是使用广搜,在确定了使用广搜之后,一个最基本的框架就搭好了。

2,首先要找到的是起点,因为起点不固定所以在输入的时候就判断一下起点,然后将起点记下。并且标记下来表示走过。

3,在搜索时,首先判断现在所在的点是不是传送门,如果是就传送,再搜索,如果不是就开始向四个方向搜索。

4,走过的路一定要标记。不然会重复走,会死循环的。

代码如下:


#include<stdio.h>
#include<math.h>
#include<string.h>
int n,m;
char a[302][302],b[302][302];
int cd[4]={-1,1,0,0},kd[4]={0,0,-1,1};
int qx,qy,cx,cy;
struct ttt
{int x;int y;int td;
}xz[200000];void cs(int xc,int yc)
{for(int i=0;i<n;i++){for(int j=0;j<m;j++){if(a[i][j]==a[xc][yc]){if(i!=xc||j!=yc){cx=i;cy=j;return 0;}}}}
}void gs()
{int head=0,tail=1;while(head<tail){if(a[xz[head].x][xz[head].y]>='A'&&a[xz[head].x][xz[head].y]<='Z'){cs(xz[head].x,xz[head].y);xz[head].x=cx;xz[head].y=cy;}for(int i=0;i<4;i++){int xc=xz[head].x+cd[i];int yc=xz[head].y+kd[i];if(a[xc][yc]!='#'&&!b[xc][yc]){b[xc][yc]=1;xz[tail].x=xc;xz[tail].y=yc;xz[tail].td=xz[head].td+1;tail++;if(a[xc][yc]=='='){printf("%d",xz[tail-1].td);return 0;}}}head++;}
}int main()
{scanf("%d%d\n",&n,&m);for(int i=0;i<n;i++){for(int j=0;j<m;j++){scanf("%c",a[i]+j);if(a[i][j]=='@'){qx=i;qy=j;}}getchar();}xz[0].x=qx;xz[0].y=qy;xz[0].td=0;b[qx][qy]=1;gs();
}

二,求先序排列

题目描述

给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,且二叉树的节点个数 \le 8≤8)。

输入格式

共两行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序排列。

输出格式

共一行一个字符串,表示一棵二叉树的先序。

输入输出样例

输入 #1复制

BADC
BDCA

输出 #1复制

ABCD

分析:

1,这个题目主要是采用分治的思想,分为左右子树两个序列通过递归来找。

2,先序的是根左右,中序的排列是左根右,后序的是左右根,所以这道题的关键在与找根,根是后序排序的最后一个,在中序排序中,根是左子树与右子树的中点。

3,可以通过在后续排序中找到根,将中序排序分为左子树与右子树,再根据左右子树,将后序排序分为左右子树,此时,后序排序的最后一个仍为根,重复递归就行。

4,它主要就是一直分,分了之后就找根,找了又分,主要就是一个分治的思想。

5,需要注意的是,它找根的时候,不能找完了之后还在找,所以当找完了之后就要退出,如果不退出一直找就会陷入死循环,所以这个条件一定要。

#include<stdio.h>
#include<string.h>
char a[10],b[10];
void tree(int l,int r)
{int i,f,c,j;c=0;if(l>r) return;for(j=strlen(a)-1;j>=0;j--){for(i=l;i<=r;i++){if(a[i]==b[j]){c=i;break;}}if(c) break;}printf("%c",a[c]);tree(l,c-1);tree(c+1,r);
}
int main()
{int i;scanf("%s%*c%s",a,b);tree(0,strlen(a)-1);
}

总结:

1,今天主要是对搜索的一个收尾工作,还有就是对二叉树的一个再次复习。

2,对于搜索的话,我们主要是是分为深搜和广搜,还有就是记忆化搜索,深搜的话主要就是找最优解,一直找,然后找到没有路可以走的时候就不找了,就比较之前找到的,它主要就是使用的递归,或者还会有回溯,主要就是使用数组模拟栈来运行,广搜的话主要就是找最短路径,层次搜索,主要就是使用数组模拟队列来运行,至于记忆化搜索的话,使用的机会不多,它主要就是用空间换时间,就是在对时间超限的题目中很好用,它主要就是将找到的结果记下来,然后在找的时候对于找过了的,直接用就行,就不用重复找了。

3,二叉树的话,首先就是二叉树的遍历,分为前序,中序,后序,先序的是根左右,中序的排列是左根右,后序的是左右根,上面这个题目,其实之前我是做过的,所以这次做的话没什么难度,但是当时是卡了很久的,因为当时一直被卡数据,主要是是退出的小数据没有注意到。

4,这周的话对自己的一个安排就是,做完二叉树的题目,啊哈算法也没多少看了,所以这周把啊哈算法也看完,然后还有就是复习,复习搜索,我的递归还有广搜学得不是很好,得多复习复习。

2023.1.2(总结)相关推荐

  1. 2023 USNews全美计算机研究生院排名发布!MIT、CMU分别称霸总榜和AI分榜

      视学算法报道   编辑:好困 拉燕 David [新智元导读]最近,U.S.News又发新榜单了!学校的评价通常会包括,投入(教育等品质)和产出(毕业生的成就)等.不过,对于科学领域来说,标准就有 ...

  2. 土壤生物多样性与生物化学过程研讨会(6.20-23合肥)

    中国土壤学会土壤生物和生化专业委员会暨土壤生物多样性与生物化学过程研讨会(第二轮通知) 来源:中国土壤学会土壤生物和生化专业委员会 更新时间:2021-05-12 原文链接:http://www.cs ...

  3. 国家五部委联合发布“AI标准顶层设计”:2021年明确、2023年初步建成

    来源:AI科技评论 本文约4300字,建议阅读8分钟. 本文介绍了完整的人工智能标准体系框架. 据国家市场监督管理总局消息,8月5日,国家标准化管理委员.中央网信办.国家发展改革委.科技部.工业和信息 ...

  4. 2023年中国AI论文影响力超越美国?网友:长期看,数量不等于质量

    转载自:机器之心 有研究统计,中国在人工智能研究方面的影响力正在逼近美国. 2017 年,中国宣布计划到 2030 年成为 AI 领域的世界领导者.2019 年 3 月,艾伦人工智能研究所(AI2)S ...

  5. 科技|全球首款飞行汽车开始量产!下月开始预售,2023年后或可实现一键打“飞车”...

    来源: 世界科技创新论坛 飞机与汽车结合的产物真的要来了.在2018全球未来出行大会上,吉利副总裁杨学良透露,由吉利控股的全资子公司.全球首家飞行汽车公司美国太力飞行汽车公司推出的"全球首款 ...

  6. 红帽喊话开发者:我们将支持 OpenJDK 8 到2023年

    百度智能云 云生态狂欢季 热门云产品1折起>>>   Java 11 发布已有三天,你升级了没? 9月25日我们在开源中国的微信公众号(oschina123)上发起了一个小调查, 结 ...

  7. Node.js 15 正式发布,14 将支持到 2023 年

    来源 | https://www.oschina.net/news/119346/node-js-15-released JavaScript 运行时 Node.js 已经更新到了 15 版本.Nod ...

  8. Al芯片前景看好,市场规模在2023年将达343亿美元

    近日,艾瑞咨询消息称,百应科技完成亿元级战略投资,投资方为恒生电子旗下产业基金与信雅达旗下产业基金. 据了解,百应科技成立于2016年9月,位于杭州,是一家数据智能技术服务公司,专注于人工智能及大数据 ...

  9. node 更新_Node.js 15 正式发布,14 将支持到 2023 年

    来源 | https://www.oschina.net/news/119346/node-js-15-releasedJavaScript 运行时 Node.js 已经更新到了 15 版本.Node ...

  10. 张霖峰:AV1和VVC的格局将在2023年后明朗

    本文是MSU评测解读的系列文章之一.不过Ucodec CEO张霖峰还讲述了Video Codec的机会,VVC与AV1的竞争格局,苹果公司在Video Codec格局中扮演的重要角色等等. 文 / 张 ...

最新文章

  1. 深入探寻seajs的模块化与加载方式
  2. Zabbix的故障与恢复邮件设置
  3. QDoc清单文件示例
  4. Jenkins配置与使用
  5. SpringBoot 配置多数据源(Sql Server、MySql)
  6. C++一天一个程序(一)
  7. Question of the Day: Microsoft | Database, Multiple Questions in One
  8. 怎样从Linux终端管理进程:10个你必须知道的命令
  9. ModelCoder国产化解决方案已逐步代替国外软件Matlab/Simulink
  10. 使用DIDatepicker
  11. EXTJS4自学手册——EXT基本方法、属性(mixins多继承、statics、require)
  12. 1. PSR-1 --- 基本代码规范
  13. matlab用本原多项式生成本的m序列,本原多项式产生的m序列
  14. L298N电机驱动模块
  15. 实现一个打点计时器,要求 1、从 start 到 eThd(包含 start 和 eThd),每隔 100 毫秒 coThsole.log 一个数字,每次数字增幅为 1 2、返回的对象中需要包含一个
  16. NoteBook / 期货及衍生品基础(6)
  17. [渝粤教育] 中央财经大学 审计学 参考 资料
  18. 【Java面试高频-集合】- 读写的场景设计集合是怎么样?对于读多写少要如何设计的呢?对于读少写多又该如何设计呢?
  19. 2015‘互联网+中国’峰会——马化腾主题演讲
  20. 一次 applet 客户端打印 jasperreport 报表任务笔记

热门文章

  1. 约瑟夫环 poj 3750 小孩报数问题 模拟
  2. 又一国家级测速软件上线:绿色免费,支持5G 和千兆测速
  3. 服务器硬盘坏道修复教程视频,Linux服务器磁盘坏道的修复过程
  4. 通过12334说说InnoDB里面的锁
  5. android双日期选择器,AndroidPicker 安卓选择器类库,包括日期选择器、时间选择器、单项选择器、双项选择器、城市地址选择器、车牌号选择器 @codeKK Android开源站...
  6. 整合swagger文档
  7. Don‘t know how to iterate over supplied “items“ in lt;forEachgt;
  8. QQ把游戏放进聊天框,这一点Facebook和微信都没做到
  9. 离散数学——FIRST集,FOLLOW集和SELECT集的通俗求法
  10. NLP14-基于Gensim中的Doc2Vec的试探