kuangbin
一个老实的人
这个作者很懒,什么都没留下…
展开
-
【kuangbin】搜索进阶 - 1.八数码【A*+记录路径】
Date:2022.03.15 题目描述: 在一个 3×3 的网格中,1∼8 这 8 个数字和一个 X 恰好不重不漏地分布在这 3×3 的网格中。 例如: 1 2 3 X 4 6 7 5 8 在游戏过程中,可以把 X 与其上、下、左、右四个方向之一的数字交换(如果存在)。 我们的目的是通过交换,使得网格变为如下排列(称为正确排列): 1 2 3 4 5 6 7 8 X 例如,示例中图形就可以通过让 X 先后与右、下、右三个方向的数字交换成功得到正确排列。 交换过程如下: 1 2 3 1 2 3 1原创 2022-03-16 00:44:40 · 457 阅读 · 0 评论 -
【kuangbin】简单搜索 - 14.找路【BFS】
Date:2022.02.15 题意: 给定一个 n 行 m 列的方格矩阵。 其中有些方格是空地(可以进入),有些方格是餐厅(可以进入),有些方格是障碍(不可进入)。 开始时,小 Y 和小 M 各自位于一个空地方格中。 每个人都可以沿上下左右四个方向进行移动,移动一格距离需要花费 11 分钟时间。 他们希望选择一家餐厅进行聚餐,要求两人从各自出发点到达该餐厅所花费的时间之和尽可能小。 输出这个最小时间和。 输入格式 输入包含多组测试数据。 每组数据第一行包含两个整数 n,m。 接下来 n 行,包含一个 n×原创 2022-02-17 17:08:53 · 272 阅读 · 0 评论 -
【kuangbin】简单搜索 - 13.非常可乐【BFS】
Date:2022.02.15 题意: 大家一定觉的运动以后喝可乐是一件很惬意的事情,但是 seeyou 却不这么认为。 因为每次当 seeyou 买了可乐以后,阿牛就要求和 seeyou 一起分享这一瓶可乐,而且一定要喝的和 seeyou 一样多。 但 seeyou 的手中只有两个杯子,它们的容量分别是 N 毫升和 M 毫升。 可乐的体积为 S (S<101)毫升 (正好装满一瓶) ,它们三个之间可以相互倒可乐 (都是没有刻度的,且 S=N+M,101>S>0,N>0,M>0) 。 聪明的 ACME原创 2022-02-17 17:05:15 · 353 阅读 · 0 评论 -
【kuangbin】简单搜索 - 12.石油储备【BFS+Floodfill】
Date:2022.02.13 题意: 一片土地可以看作是一个 n 行 m 列的方格矩阵。 其中一些方格藏有石油,用 @ 表示,其余方格没有石油,用 * 表示。 每个方格都与其上、下、左、右、左上、右上、左下、右下八个方格视为相邻。 如果两个藏有石油的方格相邻,则它们被认为是处于同一片油田,否则它们被认为是处于不同油田。 请问,该土地中共有多少片油田。 输入格式 输入包含多组测试数据。 每组数据第一行包含两个整数 n,m。 接下来 n 行,包含一个 n 行 m 列的字符矩阵,表示土地情况。 当输入一行 0原创 2022-02-14 01:36:03 · 347 阅读 · 0 评论 -
【kuangbin】简单搜索 - 11.迷宫问题【BFS+记录路径】
Date:2022.02.13 题意: 给定一个 n×n 的二维数组,如下所示: int maze[5][5] ={ 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, }; 它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。 数据保证至少存在一条从左上角走到右下角的路径。 输入格式 第一行包含整数 n。 接下来 n 行,每行包含 n原创 2022-02-14 01:34:23 · 93 阅读 · 0 评论 -
【kuangbin】简单搜索 - 10.起火迷宫【BFS】
Date:2022.02.13 题意: 一个迷宫可以看作一个 R 行 C 列的方格矩阵。 其中一些方格是空地,用 . 表示,其他方格是障碍,用 # 表示。 开始时,乔位于一块空地之中。 迷宫中一些空地已经起火了,幸运的是火还没有蔓延至乔所在的位置。 为了避免被火烧伤,乔需要尽快逃离迷宫。 已知,乔每单位时间只能沿上下左右四个方向前进一格距离,并且在前进过程中,他不能进入障碍方格。 火每单位时间都会蔓延至其上下左右四个方向的相邻空地,但是火也会被障碍阻挡。 如果一个方格已经起火或者会在乔进入方格的那一时刻恰好原创 2022-02-14 01:31:44 · 310 阅读 · 0 评论 -
【kuangbin】简单搜索 - 9.点火游戏【BFS】
Date:2022.02.11 题意: 给定一个 N 行 M 列的方格矩阵。 其中一部分方格是草地,其余部分是空地。 草地能够被燃烧,空地不会。 当某个草地在 t 时刻被点燃时,其上下左右四个方向的相邻方格中的草地方格也会在 t+1 时刻被点燃。 注意,空地方格无论如何都不可能被点燃。 现在,你可以选择最多两个草地,将它们点燃。 请你计算,使得所有草地都被点燃所需花费的最少时间。 输入格式 第一行包含整数 T,表示共有 T 组测试数据。 每组数据第一行包含两个整数 N,M。 接下来 N 行,包含一个 N×M原创 2022-02-11 15:03:46 · 1474 阅读 · 0 评论 -
【kuangbin】简单搜索 - 8.罐子【BFS】
Date:2022.02.06 题意: 给你两个罐子,容积分别为 A 升和 B 升。 现在,你可以进行如下三种操作: 1.FILL(i),将罐子 i(1≤i≤2)灌满水。 2.DROP(i),将罐子 i(1≤i≤2)清空。 3.POUR(i,j),将罐子 i 中的水倒向罐子 j,直到罐子 i 空了或罐子 j 满了为止。 请问,至少多少次操作后,可以使得其中一个罐子里恰好有 C 升水。 输入格式 共一行,三个整数 A,B,C。 输出格式 如果无解,则输出一行 impossible 即可。 否则,第一行输出一个原创 2022-02-11 13:16:31 · 390 阅读 · 0 评论 -
【kuangbin】简单搜索 - 7.洗牌【模拟】
Date:2022.02.06 题意: 给定两叠纸牌 S1 和 S2,每叠恰好有 C 张牌。 每张牌的尺寸大小都完全相同,但是颜色可能不同。 下面介绍洗牌规则。 不妨设 S1 中纸牌从上到下编号依次为 a1,a2,…,aC,S2 中纸牌从上到下编号依次为 b1,b2,…,bC。 洗牌就是将这两叠牌交错堆叠在一起,形成一个拥有 2C 张牌的新牌堆 S12。 新牌堆中的牌由上至下依次为 a1,b1,a2,b2,…,aC,bC。 可参考下图: 然后,将牌堆从中间一分为二,下半部分是新的 S1,上半部分是新的 S原创 2022-02-11 13:08:37 · 294 阅读 · 0 评论 -
【kuangbin】简单搜索 - 6.质数路径【BFS】
Date:2022.02.05 题意: 给定两个四位质数 A 和 B,你需要通过最少的操作次数将 A 变为 B。 每次操作只能改变当前数的其中一位数字,并且每次操作过后,当前数必须仍然是一个质数。 例如,将 1033 变为 8179,最少需要进行 6 次操作,具体操作为: 1033 -> 1733 -> 3733 -> 3739 -> 3779 -> 8779 -> 8179 请计算并输出所需要的最少操作次数。 输入格式 第一行包含整数 T,表示共有 T 组测试数据。 每原创 2022-02-06 10:06:09 · 864 阅读 · 0 评论 -
【kuangbin】简单搜索 - 5.找倍数【BFS】
Date:2022.02.04 题意: 给定一个正整数 n,请你找到一个它的非零倍数 m。 要求 m 中只包含数字 0 或 1,并且总位数不超过 100 位。 输入格式 输入包含多组测试数据。 每组数据占一行,包含一个正整数 n。 当输入 n=0 时,表示输入结束。 输出格式 每组数据输出一行 m。 如果方案不唯一,则输出任意合理方案均可。 数据范围 1≤n≤200 输入样例: 2 6 19 0 输出样例: 10 100100100100100100 111111111111111111 思路:n只有200原创 2022-02-04 16:58:18 · 170 阅读 · 0 评论 -
【kuangbin】简单搜索 - 4.翻转【递归搜索+开关灯模型】
Date:2022.02.02 题意: 给定一个 M×N 的 01 矩阵。 你需要选择其中一些元素,并对选择的元素进行翻转操作。 翻转操作是指将所选元素以及与其上下左右相邻的元素(如果有)进行翻转(0 变 1,1 变 0)。 我们希望最终矩阵变为一个全 0 矩阵,并且选择进行翻转操作的元素数量尽可能少。 输出最佳翻转方案。 输入格式 第一行包含整数 M,N。 接下来 M 行,每行包含 N 个整数,每个整数为 0 或 1。 输出格式 共 M 行,每行包含 N 个整数,其中第 i 行第 j 列的整数,表示第 i原创 2022-02-04 16:16:11 · 94 阅读 · 0 评论 -
【kuangbin】简单搜索 - 3.抓住那头牛【BFS】
Date:2022.02.02 题意: 农夫知道一头牛的位置,想要抓住它。 农夫和牛都位于数轴上,农夫起始位于点 N,牛位于点 K。 农夫有两种移动方式: 1.从 X 移动到 X−1 或 X+1,每次移动花费一分钟 2.从 X 移动到 2∗X,每次移动花费一分钟 假设牛没有意识到农夫的行动,站在原地不动。 农夫最少要花多少时间才能抓住牛? 输入格式 共一行,包含两个整数N和K。 输出格式 输出一个整数,表示抓到牛所花费的最少时间。 数据范围 0≤N,K≤10510^5105 输入样例: 5 17 输出样例:原创 2022-02-02 16:51:11 · 67 阅读 · 0 评论 -
【kuangbin】简单搜索 - 2.地牢大师【BFS】
Date:2022.01.31 题意: 你现在被困在一个三维地牢中,需要找到最快脱离的出路! 地牢由若干个单位立方体组成,其中部分不含岩石障碍可以直接通过,部分包含岩石障碍无法通过。 向北,向南,向东,向西,向上或向下移动一个单元距离均需要一分钟。 你不能沿对角线移动,迷宫边界都是坚硬的岩石,你不能走出边界范围。 请问,你有可能逃脱吗? 如果可以,需要多长时间? 输入格式 输入包含多组测试数据。 每组数据第一行包含三个整数 L,R,C 分别表示地牢层数,以及每一层地牢的行数和列数。 接下来是 L 个 R 行原创 2022-02-02 16:36:33 · 88 阅读 · 0 评论 -
【kuangbin】简单搜索 - 1.棋盘问题【DFS】
Date:2022.01.31 题意: 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。 要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放 k 个棋子的所有可行的摆放方案数目 C。 输入格式 输入含有多组测试数据。 每组数据的第一行是两个正整数 n,k,用一个空格隔开,表示了将在一个 n∗n 的矩阵内描述棋盘,以及摆放棋子的数目。当为-1 -1时表示输入结束。 随后的 n 行描述了棋盘的形状:每行有 n 个字符,其中 ‘#’ 表示棋盘区原创 2022-02-02 16:29:12 · 62 阅读 · 0 评论