自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 P1588 [USACO07OPEN] Catch That Cow S (dfs+剪枝做法)

FJ 丢失了他的一头牛,他决定追回他的牛。计算他至少需要几步追上他的牛。这是因为当 FJ 的位置与牛的位置相差不大时,可以通过简单的前进或后退操作到达目标,无需翻倍移动。这样做的目的是在搜索过程中实时保持一个初步的最优解(可能不是最终最优解),以防止遗漏某些简单情况下的最优路径。dfs的思想是"不撞南墙不回头",这是一道典型的bfs题,运用dfs会无限递归,所以需要剪枝和限制(自己造一个"南墙")如果满足条件,则直接返回,避免进行无意义的递归搜索,相当于创建一个"南墙"。对于每组数据,输出最少步数。

2024-01-24 16:22:43 377 2

原创 dfsP1135 奇怪的电梯

首先,用深搜解决,深搜函数部分就两个大操作,搜索与相对应的题目计算,每到一层楼就搜索那一层楼的两种情况,并用一个辅助数组来记录剪枝。我们可以让辅助数组记录每次走到的位置我们的操作步数,下次走到这个位置时我们的操作数必须小于最小的那个,建议看代码。dfs求解需要剪枝,不然会超时,同时还要考虑这道题找不到输出-1的这个因素。这题是一道bfs的标准题,但是也可以用dfs求解。

2023-12-26 06:15:00 816 1

原创 每日一题(dfs) P2196 [NOIP1996 提高组] 挖地雷

这一题就是标准的dfs就最值的方法。然后扫描周围,可以就进去,并且标记。知道尽头退出来,并回溯记录答案。在跳进去的洞穴继续扫描。

2023-12-25 21:27:03 495

原创 每日一题(dfs) P1596 [USACO10OCT] Lake Counting S

在某些情况下,利用if等语句可以使函数不会无限递归,也没有输出路径的要求,就可以将回溯部分不用单独分出,也相当于是省略。dfs深度优先搜索就是向一条路走到底,然后再一步一步退出来,其代码一般由两部分组成。本体遇到一个'W',如果其是没有被搜索过的,就开始搜索,并标记。本体既可以暴力,也可以dfs和bfs。在此先介绍dfs做法。

2023-12-23 11:50:14 419 1

原创 每日一题(dfs) 洛谷 P1219 [USACO1.5] 八皇后 Checker Challenge

所以判断斜方向,即x1-y1 == x2-y2 || x1+y1 == x2+y2即可。我们认为横轴方向为横坐标记为x,纵轴方向为纵坐标记为y。这三个白色方格x与y之和都是4。这三个白色方格x与y之差都是0。这题难点在于判断是否冲突。特别是斜方向的该怎么判断。

2023-12-22 06:15:00 841

原创 每日一题(dfs) 洛谷 P9011 [USACO23JAN] Air Cownditioning II B

然后遇到一个空调就在空调范围内数组cw都减p,同时加上空调的费用。我们可以用一个桶cw(其实就是一个数组)来表示需要下降的温度和。最后检查cw的数据情况就行了。dfs 深度优先搜索。利用dfs一步一步看。

2023-12-21 20:34:59 554

原创 每日一题(dfs) P1157 组合的输出

选完之后就有了前三个答案,然后退一步,回到第二步,此时选择的数字必须>2,在次选择3,进入第三步,在第三步选择的数字必须 >3。用dfs来思考,走三步,第一步走1,则后面的两步里选择的答案必须大于1,第二步选择2,第三步就必须是>2的数字。所以可以看出来,我们每走一步,后面的数字必须大于前面的数字。这一题与全排列的区别就是其不能有重复。以题目里面的例子来看。

2023-12-20 06:15:00 834 1

原创 每日一题(dfs) 洛谷 B3622 枚举子集

先走满,全是N,然后慢慢退,改N为Y就行了。

2023-12-19 19:26:28 784 1

原创 每日一题(dfs) 洛谷 P1706 全排列问题

其是在1的基础上分叉有2与三,先选2,再选3。这是dfs(深度优先搜索)的模板题。在2的基础上先选1,再选3。在3的基础上先选1,再选2。

2023-12-19 19:21:43 327

原创 冒泡排序,选择排序,插入排序,希尔排序,快速排序和归并排序

【代码】冒泡排序,选择排序,插入排序,希尔排序,快速排序和归并排序。

2023-11-17 19:50:08 117

原创 scanf函数和printf函数以及常用占位符

所以无法读取多个单词,除非多个%s一起使用,所以scanf不适合读取带有多个空格的字符串,例如英文句子,另外,scanf遇到%s占位符,会在字符串末尾储存一个\0,scanf输入时不会检查输入字符是否超过了长度,储存字符串时,很可能超出边界,为防止其使用%s占位符时,应该指定读入字符串的最长长度,即写成%[m]s,[m]为一个整数,例如%7s。有时我们会见到%6d,或者%.3f之类,如果在占位符%和d之间加入整数,则表示其有。再看n,%2d,表示至少有两位,其为三位数,就可以完整打印啦。

2023-10-15 11:19:03 525

原创 C语言中的字符,字符串和字符数组

每个字符串都会有\0,\0也称为终止符,其也属于字符,就是计算机读入字符串或字符数组后输出时必须要有\0来终止,每个字符串都会自带终止符,但是字符数组需要自己输入。不知有人是否会疑惑,就是上面两个是否会相等呢,答案是相等,但是不能用==来比较,==,>,之类的是来比较数字的,要比较字符,可以用strcmp函数来比较(这里就不多说了)本人为初学者,在此写下自己的所学所得,分享,若有错误请指出,本人必会加以改正。字符串就是”“,来表示一串字符,主要是每个字符串最末尾都有个\0。字符就是单个字符,如’a'之类。

2023-10-07 19:02:17 123 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除