搜索
搜索
_lizi_
保持很多的热爱,和一点点野心。
展开
-
Week3 作业A 选数 dfs剪枝
题意:有n个数,从中选取k个,要求和为s,计算有多少种选数的方法。其中, k<=n<=16。题目分析:dfs递归求解,n个数存放在数组a内,递归函数的参数为sum、i,表示从a[i]向后选数,和为sum,选出的数放进全局变量vector容器v内。当v中元素数为k并且sum=0时,找到一种符合条件的选数方法;当i>=n或者v中元素数>k或者sum<0时,该选...原创 2020-03-17 23:16:41 · 119 阅读 · 0 评论 -
CSP M1-C 可怕的宇宙射线 dfs剪枝
题意:宇宙射线在二维平面内传播,一段距离后向左右45°分裂,威力不变。宇宙射线会分裂n次,每次分裂后前进ai个单位再分裂。计算共有多少二维平面内的点受到宇宙射线的攻击。Input:第一行:分裂次数 n(n<=30)第二行:n个数,第i个数ai表示第i次分裂后前进的距离,ai<=5Output:一个数ans,表示共有ans个点被攻击题目分析:每一个点的状态...原创 2020-03-17 22:01:26 · 143 阅读 · 0 评论 -
八皇后 dfs 洛谷P1219
P1219 [USACO1.5]八皇后 Checker Challenge题意:n×n的棋盘,放置n个皇后,使其不会互相攻击。同行、同列、同对角线会相互攻击。按字典序输出前三个,第四行输出一共有多少种放法。做法:数组a[i]存放第i行的皇后放在哪一列,递归枚举全排列。枚举过程中判合法(可行性剪枝),判断左上、正上、右上是否有冲突,若是,回溯到父亲节点。代码://手动开O2...原创 2020-03-06 11:31:37 · 186 阅读 · 0 评论 -
Week2 作业B 倒水 bfs 隐式图
题意:给出A、B两个杯子的容量,通过执行一系列指令,最终某个杯子里有C容量的水。要求输出这一系列指令,fill A代表倒满A杯,empty A代表倒空A杯,pour A B代表将A中水倒入B中(要么B倒满,要么A倒空)做法:构造结点Status,a表示A杯中水的容量,b表示B杯中水的容量,由于最终要求输出每一步的具体操作,可以为每一个Status增加一个string c,记录转移方式。ma...原创 2020-03-03 22:52:12 · 2250 阅读 · 0 评论 -
Week2 作业A 迷宫 bfs
题意:输入5*5矩阵,1表示墙,0表示可走。找出从左上角到右下角的最短路径所经过的坐标(输入保证有唯一解)做法:bool型二维数组vis保存输入的01矩阵,1表示墙,0表示可走。map from保存每一个经过的坐标的前驱结点坐标。queue q保存每一层扩展时的中心结点。为方便层层扩展时遍历上下左右四个方向,定义数组dx[]={0,0,-1,1},dy[]={1,-1,0,0}。初始化...原创 2020-03-03 22:15:48 · 125 阅读 · 0 评论 -
CSP 201604-4 游戏 bfs 高维数组
题目:n*m的方格,某些时刻某些方格危险。求(1,1)到(n,m)的最短时间。注意,每个时间单位必须走,不能停。思路:每个点由(x,y,t)三维描述,vis数组也使用三维记录,-1表示危险,0代表可到达,>0代表最短步数。取(1,1,0),x、y、t同时扩展,判断条件,修改vis,入队列注意:1.时间维的range与x、y不同,没有危险的情况下最大200,由于有危险的时间&...原创 2020-03-01 00:17:51 · 189 阅读 · 0 评论 -
CSP 201409-4 最优配餐 bfs 多源
题目:n*n的网格,m个分店,k个客户,d堵墙。可以从任意分店给任意客户配餐,每一份餐走一单位距离花费为1,求最小花费。思路:最短路径,多起点多终点,可以将所有起点看作一个整体,所有起点一次性放入队列。int vis[][]记录每个点的信息,-2代表墙,0代表没有到达过但可以到达,>0代表订餐数。bool in[][]记录是否到达过。int dis[][]记录到达每一个顶点的最短...原创 2020-02-29 21:45:48 · 227 阅读 · 0 评论