杂题
杂题
耐、
你不能停止努力。
展开
-
拯救行动 【优先队列BFS】
公主被恶人抓走,被关押在牢房的某个地方。牢房用N*M (N, M <= 200)的矩阵来表示。矩阵中的每项可以代表道路(@)、墙壁(#)、和守卫(x)。英勇的骑士(r)决定孤身一人去拯救公主(a)。我们假设拯救成功的表示是“骑士到达了公主所在的位置”。由于在通往公主所在位置的道路中可能遇到守卫,骑士一旦遇到守卫,必须杀死守卫才能继续前进。现假设骑士可以向上、下、左、右四个方向移动,每移动...原创 2020-05-08 11:50:43 · 772 阅读 · 0 评论 -
迷宫问题 【模拟队列BFS】【反向BFS】
定义一个二维数组: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表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序找出从左上角到右下角的最短路线。Input一个5 × 5的二维数组,表示一个迷宫。数据保...原创 2020-05-08 11:02:10 · 187 阅读 · 0 评论 -
HDU1072 Nightmare【可重复入队型BFS】
Ignatius had a nightmare last night. He found himself in a labyrinth with a time bomb on him. The labyrinth has an exit, Ignatius should get out of the labyrinth before the bomb explodes. The initial ...原创 2020-05-08 10:20:17 · 113 阅读 · 0 评论 -
HDU1372 Knight Moves【BFS】
A friend of you is doing research on the Traveling Knight Problem (TKP) where you are to find the shortest closed tour of knight moves that visits each square of a given set of n squares on a chessboa...原创 2020-05-08 10:04:05 · 88 阅读 · 0 评论 -
POJ 1077 Eight 【八数码问题、康托展开、双向BFS、反向BFS、打表】
The 15-puzzle has been around for over 100 years; even if you don’t know it by that name, you’ve seen it. It is constructed with 15 sliding tiles, each with a number from 1 to 15 on it, and all packed...原创 2020-05-04 10:36:54 · 219 阅读 · 0 评论 -
OJ 3752:走迷宫【双向BFS】
描述一个迷宫由R行C列格子组成,有的格子里有障碍物,不能走;有的格子是空地,可以走。给定一个迷宫,求从左上角走到右下角最少需要走多少步(数据保证一定能走到)。只能在水平方向或垂直方向走,不能斜着走。输入第一行是两个整数,R和C,代表迷宫的长和宽。( 1<= R,C <= 40)接下来是R行,每行C个字符,代表整个迷宫。空地格子用’.‘表示,有障碍物的格子用’#‘表示。迷宫...原创 2020-05-04 00:13:50 · 551 阅读 · 0 评论 -
acwing 111. 畜栏预定【贪心、区间分组】
有N头牛在畜栏中吃草。每个畜栏在同一时间段只能提供给一头牛吃草,所以可能会需要多个畜栏。给定N头牛和每头牛开始吃草的时间A以及结束吃草的时间B,每头牛在[A,B]这一时间段内都会一直吃草。当两头牛的吃草区间存在交集时(包括端点),这两头牛不能被安排在同一个畜栏吃草。求需要的最小畜栏数目和每头牛对应的畜栏方案。输入格式第1行:输入一个整数N。第2…N+1行:第i+1行输入第i头牛的开始吃草时间A以及结束吃草时间B,数之间用空格隔开。输出格式第1行:输入一个整数,代表所需最小畜栏数。第2…N原创 2020-05-18 17:21:35 · 144 阅读 · 0 评论 -
百练 4151 电影节【最大不相交区间数量问题(区间选点类似)、贪心】
4151:电影节描述大学生电影节在北大举办! 这天,在北大各地放了多部电影,给定每部电影的放映时间区间,区间重叠的电影不可能同时看(端点可以重合),问李雷最多可以看多少部电影。输入多组数据。每组数据开头是n(n<=100),表示共n场电影。接下来n行,每行两个整数(0到1000之间),表示一场电影的放映区间n=0则数据结束输出对每组数据输出最多能看几部电影样例输入83 40 7 3 8 15 1915 2010 158 18 6 12 0样例输出3ht原创 2020-05-18 15:14:19 · 364 阅读 · 0 评论 -
百炼 1328 Radar Installation雷达 【 区间选点、贪心】
描述Assume the coasting is an infinite straight line. Land is in one side of coasting, sea in the other. Each small island is a point locating in the sea side. And any radar installation, locating on the coasting, can only cover d distance, so an island in原创 2020-05-17 21:34:23 · 138 阅读 · 0 评论 -
百练 2815 城堡问题【DFS 水】
1 2 3 4 5 6 7 ############################# 1 # | # | # | | # #####---#####---#---#####---# 2 # # | # # # # # #---#####---#####---#####---# 3 # | | # # # # # #---#########---#####--...原创 2020-05-12 11:02:22 · 119 阅读 · 0 评论 -
acwing 186. 巴士【迭代加深 DFS *** 】
一名男子在12:00抵达了某巴士站,并且在12:00-12:59期间他将在那里逗留。巴士站有很多巴士路线,巴士抵达的时间均已给出。该男子观察巴士的抵达时间,有所发现:1、在12:00 ~12:59 期间,同一线路上的巴士以相同的时间间隔到站。2、每条巴士线路至少有两辆车到达本站。3、不同线路的巴士可以同时到达本站。4、不同巴士线路的车首次到达本站的时间和到站的时间间隔都有可能相同。5、测试用例中的总线路不会超过17条。请你编写一个程序,求出在所有巴士到达本站的时刻满足输入数据的要求的情况下,原创 2020-05-11 21:24:14 · 620 阅读 · 0 评论 -
ACwing 187. 导弹防御系统 【DFS】
为了对抗附近恶意国家的威胁,R国更新了他们的导弹防御系统。一套防御系统的导弹拦截高度要么一直 严格单调 上升要么一直 严格单调 下降。例如,一套系统先后拦截了高度为3和高度为4的两发导弹,那么接下来该系统就只能拦截高度大于4的导弹。给定即将袭来的一系列导弹的高度,请你求出至少需要多少套防御系统,就可以将它们全部击落。输入格式输入包含多组测试用例。对于每个测试用例,第一行包含整数n,表示来袭导弹数量。第二行包含n个不同的整数,表示每个导弹的高度。当输入测试用例n=0时,表示输入终止,且该用例无原创 2020-05-11 20:56:00 · 192 阅读 · 0 评论 -
ACwing 171. 送礼物【DFS 双向搜索】
达达帮翰翰给女生送礼物,翰翰一共准备了N个礼物,其中第i个礼物的重量是G[i]。达达的力气很大,他一次可以搬动重量之和不超过W的任意多个物品。达达希望一次搬掉尽量重的一些物品,请你告诉达达在他的力气范围内一次性能搬动的最大重量是多少。输入格式第一行两个整数,分别代表W和N。以后N行,每行一个正整数表示G[i]。输出格式仅一个整数,表示达达在他的力气范围内一次性能搬动的最大重量。数据范围1≤N≤46,1≤W,G[i]≤231−1输入样例:20 5754181输出样例:19原创 2020-05-10 23:47:14 · 234 阅读 · 0 评论 -
ACwing170. 加成序列 【DFS 迭代加深】
满足如下条件的序列X(序列中元素被标号为1、2、3…m)被称为“加成序列”:1、X[1]=12、X[m]=n3、X[1]<X[2]<…<X[m-1]<X[m]4、对于每个 k(2≤k≤m)都存在两个整数 i 和 j (1≤i,j≤k−1,i 和 j 可相等),使得X[k]=X[i]+X[j]。你的任务是:给定一个整数n,找出符合上述条件的长度m最小的“加成序列”。如果有多个满足要求的答案,只需要找出任意一个可行解。输入格式输入包含多组测试用例。每组测试用例占据一行,原创 2020-05-10 22:40:40 · 124 阅读 · 0 评论 -
分成互质组【dfs】
蒜头君给定 n 个正整数,将它们分组,使得每组中任意两个数互质。至少要分成多少个组?输入格式第一行是一个正整数 n。1≤n≤10。第二行是 n 个不大于 10000 的正整数。输出格式一个正整数,即最少需要的组数。输出时每行末尾的多余空格,不影响答案正确性样例输入614 20 33 117 143 175样例输出3题目链接:https://nanti.jisuanke.com/t/T1216解题思路:每个组开设一个数组存放,新的整数进行:1.如果与某个组的成员不影响互质性,那么就存原创 2020-05-10 21:48:48 · 438 阅读 · 0 评论 -
leetcode 282.给表达式添加运算符【DFS】
给定一个仅包含数字 0-9 的字符串和一个目标值,在数字之间添加二元运算符(不是一元)+、- 或 * ,返回所有能够得到目标值的表达式。示例 1:输入: num = “123”, target = 6输出: [“1+2+3”, “123”]示例 2:输入: num = “232”, target = 8输出: [“23+2", "2+32”]示例 3:输入: num = “105”...原创 2020-04-14 00:05:59 · 256 阅读 · 0 评论 -
leetcode 301.删除无效的括号【DFS】
删除最小数量的无效括号,使得输入的字符串有效,返回所有可能的结果。说明: 输入可能包含了除 ( 和 ) 以外的字符。示例 1:输入: “()())()”输出: ["()()()", “(())()”]示例 2:输入: “(a)())()”输出: ["(a)()()", “(a())()”]示例 3:输入: “)(”输出: [""]来源:力扣(LeetCode)链接:http...原创 2020-04-14 00:03:40 · 234 阅读 · 0 评论 -
数独【DFS、二进制表示】
数独是一种传统益智游戏,你需要把一个9 × 9的数独补充完整,使得图中每行、每列、每个3 × 3的九宫格内数字1~9均恰好出现一次。请编写一个程序填写数独。输入格式输入包含多组测试用例。每个测试用例占一行,包含81个字符,代表数独的81个格内数据(顺序总体由上到下,同行由左到右)。每个字符都是一个数字(1-9)或一个”.”(表示尚未填充)。您可以假设输入中的每个谜题都只有一个解决方案...原创 2020-04-12 08:45:46 · 778 阅读 · 0 评论 -
全排列、组合、子集问题【DFS+回溯】
1.给出一列互不相同的整数,返回其全排列。样例输入:[1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]//3个位置,每个位置枚举可以放1,2,3,利用st表示此数是否可用的状态。class Solution {public: vector<vector<int>> an...原创 2020-04-10 09:09:07 · 283 阅读 · 0 评论