
厦大校外实训c++
FFFade_
XMU.2021.
展开
-
击杀黄金蛋糕人马(分蛋糕)
题意简述:将宽为w,高为h的蛋糕分成m块,求所有分法中最大蛋糕面积的最小值。思路:分解成子问题:min(第一刀竖着切的minmax SS, 第一刀横着切的minmax SH) 其中SS = max( S(i, h, k), S(w - i, h, cut- k - 1) ); (左右半边最大蛋糕最小值的较大值) 同理SH = max( S(w, i, k)...原创 2022-05-05 22:16:52 · 570 阅读 · 0 评论 -
小猫爬山问题
思路: 深搜(因为n很小,c和w很大,不是背包)两种情况:1.这只猫放在已有的车里2.为这只猫新造一辆车剪枝:1.从大到小排序(选择少)2.当cnt >= res的时候返回(肯定不是最小的)描述Freda和rainbow饲养了N只小猫,这天,小猫们要去爬山。经历了千辛万苦,小猫们终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了(呜咕>_<)。Freda和rainbow只好花钱让它们坐索道下山。索道上的缆车最大承重量为W,而N只小猫的重量分别是C原创 2022-04-28 20:46:04 · 171 阅读 · 0 评论 -
厦大期中 n-皇后问题
描述n-皇后问题是指将 n 个皇后放在 n∗n 的国际象棋棋盘上,使得皇后不能相互攻击到,即任意两个皇后都不能处于同一行、同一列或同一斜线上。数据范围:1<=n<=11输入共一行,包含整数n。输出每个解决方案占n行,每行输出一个长度为n的字符串,用来表示完整的棋盘状态。其中”.”表示某一个位置的方格状态为空,”Q”表示某一个位置的方格上摆着皇后。每个方案输出完成后,输出一个空行。输出方案的顺序请根据样例,按照次序从小到大,从左到右输出。输入样例原创 2022-04-26 21:39:01 · 183 阅读 · 0 评论 -
海拉鲁城堡问题(dfs连通块)
思路:1. 一开始想着把墙当成图的一部分记下来,但发现比较麻烦而且不会区分没有墙和房间的地方;可以把墙当作判定条件之一在方位循环里处理。 2.这是典型的连通块问题:在主函数里循环找另外的节点,再对该节点展开深搜,标记可以走到的点,直到没有点可以走为止。(简洁版:标记这个点,标记符合条件的相邻点,对相邻点进行深搜) 3.墙用二进制表示与方向向量匹配。易错:x表示行, y表示列(但x是纵向走的,y是横向走的)描述 1 2 ...原创 2022-04-25 22:25:57 · 873 阅读 · 0 评论 -
马走日问题(dfs最短字典序)
题意:输出马遍历象棋棋盘的最小字典序路径(起点任意)。难点: 怎么才能只输出最小字典序的路径?解决:最小:按从小到大的顺序设置方向向量 只输出一个:将dfs标记为bool类型 到不了底的路径return false,可以搜到底的路径return true(return了就不会继续往下循环方向了)。易错:x是横向,对应q;y是纵向,对应p。#include<iostream>#include<cstring>#include&l...原创 2022-04-14 00:29:44 · 484 阅读 · 0 评论 -
Flood Fill算法(dfs && bfs)
问题本质:联通体面积深搜简略版描述: 没有出口, 能走就走, 一加到底。广搜简略版描述:不断拓展新边界,累加后入队。例题参考:迷雾森林、红与黑 这里举迷雾森林的例子(90%参考y总)描述迷雾森林被加农的玷污了,原本圣洁无比的迷雾森林,如今被彻底玷污,空气中充满着紫色的恶臭。林克临危不惧,带上呼吸面罩,挥舞大师之剑的光芒,净化迷雾。林克所到之处,加农褪去,圣洁回归。如下图,红色代表墙壁,紫色的迷雾代表需要净化的空间,金色代表林克开始净化的起点。从某处开始,林克只能向相邻..原创 2022-04-12 09:26:18 · 413 阅读 · 0 评论 -
林克的命运之阵
这题debug了好久...当n>=3的时候一直没输出,后来才发现是因为起始位置错了,下标可能是-1;tips:没有输出的可能情况:爆范围(数组、指针地址)描述每一个人心中都有一个林克。每一个林克都不一样。在命运矩阵里面,随着选择的不同,没有哪一个林克的命运会一模一样。有一个方格型的命运矩阵,矩阵边界在无穷远处。我们做如下假设:1. 每一个格子象征林克命运中的一次抉择,每次只能从相邻的方格中做选择。2. 从某个格子出发,只能从当前方格移动一格,走到某个相邻的方格上;原创 2022-04-12 09:13:49 · 591 阅读 · 0 评论 -
波兰表达式(前缀 + 中缀)
逆波兰表达式,英文为 Reverse Polish notation,跟波兰表达式(Polish notation)相对应。之所以叫波兰表达式和逆波兰表达式,是为了纪念波兰的数理科学家 Jan Łukasiewicz的创意。平时我们习惯将表达式写成 (1 + 2) * (3 + 4),加减乘除等运算符写在中间,因此称呼为中缀表达式。 而波兰表达式的写法为 (* (+ 1 2) (+ 3 4)),将运算符写在前面,因而也称为前缀表达式。 逆波兰表达式的写法为 ((1 2 +) (3 4 +) *)原创 2022-03-19 15:08:14 · 2575 阅读 · 0 评论 -
2的幂次方表示
描述输入一个正整数n(n≤20000)。输出一行,符合约定的n的0,2表示(在表示中不能有空格)。输入样例 1137输出样例 12(2(2)+2+2(0))+2(2+2(0))+2(0)思路:深搜 + bitset 结果是以 2及2(0) 为基本元构成的串#include<iostream>#include<cstring>#include<vector> #include<bitset>.原创 2022-03-19 14:39:55 · 211 阅读 · 0 评论 -
放苹果(递归解法)
要寻找克罗克果实,林克需要把苹果放在盘子里,其中只有一种情况可以让克罗克果实出现。所以,林克需要尝试所有的放法。有M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的放法?注意:5,1,1和1,5,1 是同一种放法。要点:当盘子数大于苹果数时,方案数与盘子数等于苹果数的情况相同;初值:盘子为0方案数为0,苹果为0方案数为1;划分:有空盘子 + 没有空盘子(再放一轮)#include<iostream>#include<cstring>原创 2022-03-18 20:47:33 · 597 阅读 · 0 评论 -
熄灯问题(枚举与规律)
题意: 给出5*6的由0 / 1构成的矩阵,当改变一个位置上的值时,其周边四个的值也随之改变。 进行操作,使得矩阵全为0。要点:1.操作没有先后顺序; 2.重复操作无意义; 3.第一行的操作确定之后,后续的操作将唯一确定。知识点:位运算枚举,数组的备份与清空,找规律(重复性,关联性,顺序),二维坐标改值技巧#include<iostream>#include<cstring>#include...原创 2022-03-01 21:47:09 · 287 阅读 · 0 评论