数据结构之算法
清凉一度
喜欢经典,经典是时间的产物。
总觉得自己还小,干什么都还早。有道是“记得少年骑木马,转眼已是白头人”当我认识到这一点的时候,特别后悔没有珍惜时间。这里面的笔记是,很长时间以来对我自己的提升,自己的学习过程,大家的阅读和评论是对我的一丝认可,一点激励。
展开
-
codevs均分纸牌 (贪心算法)
codevs均分纸牌 贪心算法题目描述 Description 有 N 堆纸牌,编号分别为 1,2,…, N。每堆上有若干张,但纸牌总数必为 N 的倍数。可以在任一堆上取若于张纸牌,然后移动。 移牌规则为:在编号为 1 堆上取的纸牌,只能移到编号为 2 的堆上;在编号为 N 的堆上取的纸牌,只能移到编号为 N-1 的堆上;其他堆上取的纸牌,可以移到相邻左边或右边的堆上。 现在要求...原创 2018-05-17 09:03:28 · 2737 阅读 · 2 评论 -
凑算式(全排列dfs)
凑算式 B DEFA +---- + ------- = 10 C GHI(如果显示有问题,可以参见【图1.jpg】)这个算式中AI代表19的数字,不同的字母代表不同的数字。比如:6+8/3+952/714 就是一种解法,5+3/1+972/486 是另一种解法。这个算式一共有多少种解法?注意:你提交应该是个整数,不要填写任何多余的内容或说明性...原创 2019-03-16 11:53:29 · 536 阅读 · 0 评论 -
走迷宫(dfs经典)
描述一个迷宫由R行C列格子组成,有的格子里有障碍物,不能走;有的格子是空地,可以走。给定一个迷宫,求从左上角走到右下角最少需要走多少步(数据保证一定能走到)。只能在水平方向或垂直方向走,不能斜着走。输入第一行是两个整数,R和C,代表迷宫的长和宽。( 1<= R,C <= 40)接下来是R行,每行C个字符,代表整个迷宫。空地格子用’.‘表示,有障碍物的格子用’#‘表示。迷宫...原创 2019-03-12 08:56:47 · 2213 阅读 · 0 评论 -
红与黑(dfs经典)
描述有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖移动。请写一个程序,计算你总共能够到达多少块黑色的瓷砖。输入包括多个数据集合。每个数据集合的第一行是两个整数W和H,分别表示x方向和y方向瓷砖的数量。W和H都不超过20。在接下来的H行中,每行包括W个字符。每个字符表示一块瓷砖的颜色,规则如下1)‘.’:黑色的瓷砖;2)‘#’:...原创 2019-03-12 09:01:41 · 419 阅读 · 0 评论 -
迷宫问题(bfs)
迷宫问题 poj3984查看 提交 统计 提问总时间限制: 1000ms 内存限制: 65536kB描述定义一个二维数组: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表示可以走的路,只能横着走或竖着走,不...原创 2019-03-20 18:45:40 · 2879 阅读 · 1 评论 -
牌型种数(dfs)
小明被劫持到X赌城,被迫与其他3人玩牌。一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张。这时,小明脑子里突然冒出一个问题:如果不考虑花色,只考虑点数,也不考虑自己得到的牌的先后顺序,自己手里能拿到的初始牌型组合一共有多少种呢?请填写该整数,不要填写任何多余的内容或说明文字。解题思路1:(暴力)思路:循环遍历每个点数所选择的张数,每个点数最多可以选4张,最少可以选0张...原创 2019-03-17 09:16:27 · 394 阅读 · 0 评论 -
六角填数(dfs)
标题:六角填数如图【1.png】所示六角形中,填入1~12的数字。使得每条直线上的数字之和都相同。图中,已经替你填好了3个数字,请你计算星号位置所代表的数字是多少?请通过浏览器提交答案,不要填写多余的内容。...原创 2019-03-17 12:52:50 · 351 阅读 · 0 评论 -
奇怪的比赛(dfs)
奇怪的比赛某电视台举办了低碳生活大奖赛。题目的计分规则相当奇怪:每位选手需要回答10个问题(其编号为1到10),越后面越有难度。答对的,当前分数翻倍;答错了则扣掉与题号相同的分数(选手必须回答问题,不回答按错误处理)。每位选手都有一个起步的分数为10分。某获胜选手最终得分刚好是100分,如果不让你看比赛过程,你能推断出他(她)哪个题目答对了,哪个题目答错了吗?如果把答对的记为1,答错的记...原创 2019-03-20 23:14:26 · 269 阅读 · 0 评论 -
李白打酒(递归dfs)
话说大诗人李白,一生好饮。幸好他从不开车。一天,他提着酒壶,从家里出来,酒壶中有酒2斗。他边走边唱:无事街上走,提壶去打酒。逢店加一倍,遇花喝一斗。这一路上,他一共遇到店5次,遇到花10次,已知最后一次遇到的是花,他正好把酒喝光了。请你计算李白遇到店和花的次序,可以把遇店记为a,遇花记为b。则:babaabbabbabbbb 就是合理的次序。像这样的答案一共有多少呢?请你计算出所有可能方...原创 2019-03-17 15:27:00 · 1427 阅读 · 2 评论 -
分成互质组(dfs)
分成互质组查看 提交 统计 提问总时间限制: 1000ms 内存限制: 65536kB描述给定n个正整数,将它们分组,使得每组中任意两个数互质。至少要分成多少个组?输入第一行是一个正整数n。1 <= n <= 10。第二行是n个不大于10000的正整数。输出一个正整数,即最少需要的组数。样例输入614 20 33 117 143 175样例输出3解题思路:...原创 2019-03-12 21:00:01 · 3943 阅读 · 8 评论 -
数独(dfs)
蒜头君今天突然开始还念童年了,想回忆回忆童年。他记得自己小时候,有一个很火的游戏叫做数独。便开始来了一局紧张而又刺激的高阶数独。蒜头君做完发现没有正解,不知道对不对? 不知道聪明的你能否给出一个标准答案?标准数独是由一个给与了提示数字的 9×9 网格组成,我们只需将其空格填上数字,使得每一行,每一列以及每一个 3×3 宫都没有重复的数字出现。输出这个数独得正解,输出格式如下:* 2 6 *...原创 2019-03-21 16:46:43 · 852 阅读 · 0 评论 -
方格分割(dfs)
6x6的方格,沿着格子的边线剪开成两部分。要求这两部分的形状完全相同。如图:p1.png, p2.png, p3.png 就是可行的分割法。试计算:包括这3种分法在内,一共有多少种不同的分割方法。注意:旋转对称的属于同一种分割法。请提交该整数,不要填写任何多余的内容或说明文字。解题思路:做法:仔细观察样例数据可以发现,要满足题目所需要求,只需要剪切的线关于图案的中点中心对称。那么...原创 2019-03-21 20:20:03 · 501 阅读 · 0 评论 -
三羊献瑞(dfs 全排列 枚举)
三羊献瑞(枚举法)观察下面的加法算式: 祥 瑞 生 辉 +三 羊 献 瑞------------------- 三 羊 生 瑞 气(如果有对齐问题,可以参看【图1.jpg】)其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字。请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容。解题思路:思路:因为是加法,所以进位最多只能是1,三就是1,那...原创 2019-03-21 21:53:59 · 635 阅读 · 0 评论 -
八皇后(dfs)
题目描述检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行、每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子。上面的布局可以用序列2 4 6 1 3 5来描述,第i个数字表示在第i行的相应位置有一个棋子,如下:行号 1 2 3 4 5 6列号 2 4 6 1 3 5这只是跳棋放置的一个解。请编一个程序找出所有跳棋放置的解。并把它们以上面的...原创 2019-03-13 17:28:38 · 358 阅读 · 0 评论 -
最大子列和问题(动态规划入门)
最大子列和问题 (20 分)给定K个整数组成的序列{ N1_11, N2_22, …, Nk_kk},“连续子列”被定义为{ Ni_ii ,N(i+1)_(i+1)(i+1) , …, Nj_jj },其中 1≤ i ≤ j ≤K。“最大子列和”则被定义为所有连续子列元素的和中最大者。例如给定序列{ -2, 11, -4, 13, -5, -2 },其连续子列{ 11, -4...原创 2019-05-20 23:12:56 · 661 阅读 · 0 评论 -
迷宫(dfs经典)
1792:迷宫总时间限制: 3000ms 内存限制: 65536kB描述一天Extense在森林里探险的时候不小心走入了一个迷宫,迷宫可以看成是由n * n的格点组成,每个格点只有2种状态,.和#,前者表示可以通行后者表示不能通行。同时当Extense处在某个格点时,他只能移动到东南西北(或者说上下左右)四个方向之一的相邻格点上,Extense想要从点A走到点B,问在不走出迷宫的情况下能不能...原创 2019-03-11 23:08:30 · 5150 阅读 · 2 评论 -
全排列问题(递归)
输出自然数 1到 n 所有不重复的排列,即 n的全排列,要求所产生的任一数字序列中不允许出现重复的数字。输入格式一个整数 n (1≤n≤9)。输出格式由 1∼n 组成的所有不重复的数字序列,每行一个序列。每个数字保留 5 个常宽。输出时每行末尾的多余空格,不影响答案正确性样例输入3样例输出 1 2 3 1 3 2 2 1 ...原创 2019-03-03 18:01:22 · 2257 阅读 · 1 评论 -
货车加油(优先队列)贪心思想
poj2431优先队列A group of cows grabbed a truck and ventured on an expedition deep into the jungle. Being rather poor drivers, the cows unfortunately managed to run over a rock and puncture the truck’s f...原创 2018-05-26 20:57:41 · 212 阅读 · 0 评论 -
合并果子 (优先队列) 贪心思想
合并果子 描述 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。多多决定把所有的果子合成一堆。 每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过n-1次合并之后,就只剩下一堆了。多多在合并果子时总共消耗的体力等于每次合并所耗体力之和。 因为还要花大力气把这些果子搬回家,所以多多在合并果子时要尽可能地节...原创 2018-05-26 21:04:45 · 1125 阅读 · 0 评论 -
7-2 文件传输(并查集算法)
当两台计算机双向连通的时候,文件是可以在两台机器间传输的。给定一套计算机网络,请你判断任意两台指定的计算机之间能否传输文件?输入格式: 首先在第一行给出网络中计算机的总数 N (2≤N≤10 4 ),于是我们假设这些计算机从 1 到 N 编号。随后每行输入按以下格式给出:I c1 c2 其中I表示在计算机c1和c2之间加入连线,使它们连通;或者是C c1 c2 其中C...原创 2018-05-16 12:11:55 · 1367 阅读 · 0 评论 -
L3-1 社交集群(并查集算法)
L3-1 社交集群(30 分) 当你在社交网络平台注册时,一般总是被要求填写你的个人兴趣爱好,以便找到具有相同兴趣爱好的潜在的朋友。一个“社交集群”是指部分兴趣爱好相同的人的集合。你需要找出所有的社交集群。输入格式: 输入在第一行给出一个正整数 N(≤1000),为社交网络平台注册的所有用户的人数。于是这些人从 1 到 N 编号。随后 N 行,每行按以下格式给出一个人的兴趣爱好列表: ...原创 2018-05-27 15:48:39 · 1284 阅读 · 0 评论 -
硬币问题(贪心算法)
硬币问题 问题描述: 有1元、5元、10元、50元、100元、500元的硬币各C1,C5,C10,C50,C100,C500枚。现在要用这些硬币来支付A元,最少需要多少枚硬币?假设本题至少存在一种支付方案。 限制条件: 0<=C1,C5,C10,C50,C100,C500<=10的9次方 0<= A <= 10的9次方 输入: C1 = 3 C...原创 2018-05-16 21:57:56 · 8272 阅读 · 0 评论 -
7-3 公路村村通(最小生成树K算法)
7-3 公路村村通(30 分) 现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本。输入格式: 输入数据包括城镇数目正整数N(≤1000)和候选道路数目M(≤3N);随后的M行对应M条道路,每行给出3个正整数,分别是该条道路直接连通的两个城镇的编号以及该道路改建的预算成本。为简单起见,城镇从1到N编号。输出格式: 输出...原创 2018-06-01 21:16:15 · 828 阅读 · 0 评论 -
7-10 排座位(并查集算法)
7-10 排座位(25 分) 布置宴席最微妙的事情,就是给前来参宴的各位宾客安排座位。无论如何,总不能把两个死对头排到同一张宴会桌旁!这个艰巨任务现在就交给你,对任何一对客人,请编写程序告诉主人他们是否能被安排同席。输入格式: 输入第一行给出3个正整数:N(≤100),即前来参宴的宾客总人数,则这些人从1到N编号;M为已知两两宾客之间的关系数;K为查询的条数。随后M行,每行给出一对宾客之间...原创 2018-06-01 21:18:53 · 2243 阅读 · 0 评论 -
送给圣诞夜的极光(Dfs)
描述圣诞老人回到了北极圣诞区,已经快到12点了。也就是说极光表演要开始了。这里的极光不是极地特有的自然极光景象。而是圣诞老人主持的人造极光。轰隆隆……烟花响起(来自中国的浏阳花炮之乡)。接下来就是极光表演了。人造极光其实就是空中的一幅幅n*m的点阵图像。只是因为特别明亮而吸引了很多很多小精灵的目光,也成为了圣诞夜最美丽的一刻。然而在每幅n*m的点阵图像中,每一个点只有发光和不发光两种状态。...原创 2019-01-24 16:18:30 · 200 阅读 · 0 评论 -
GZS与小公园(Dfs)
Description某天GZS漫步在学校新建的小公园,他发现那里建成了一些水池和小河道。我们暂且把它们统一看成水池。假设公园旁有一张小公园的地图,上面仅标识了此处是否是水池,你能帮GZS计算出该地图中一共有几个水池吗。Input第一行输入一个整数N,表示共有N组测试数据 每一组数据都是先输入该地图的行数m(0<m<100)与列数n(0<n<100),然后,输入接下来...原创 2019-01-24 19:49:43 · 159 阅读 · 0 评论 -
LIS 最长上升子序列
LIS是最长上升子序列。什么是最长上升子序列? 就是给你一个序列,请你在其中求出一段最长严格上升的部分,它不一定要连续。就像这样:2, 3, 4, 7 和 2, 3, 4,6 就是序列 2 5 3 4 1 7 6 的两个上升子序列,最长的长度是 4。DP-最长上升子序列:#include<iostream>#include<cstring>using namesp...原创 2019-02-19 19:54:06 · 269 阅读 · 0 评论 -
全排列(aab baa aba)
相信大家都知道什么是全排列,但是今天的全排列比你想象中的难一点。我们要找的是全排列中,排列结果互不相同的个数。比如:aab 的全排列就只有三种,那就是aab,baa,aba。代码框中的代码是一种实现,请分析并填写缺失的代码。#include <cstdio>#include <cstdlib>#include <cstring>#include <...原创 2019-02-19 21:15:32 · 1763 阅读 · 0 评论 -
全球变暖(bfs dfs)
你有一张某海域NxN像素的照片,".“表示海洋、”#"表示陆地,如下所示:........##.....##........##...####....###........其中"上下左右"四个方向上连在一起的一片陆地组成一座岛屿。例如上图就有2座岛屿。由于全球变暖导致了海面上升,科学家预测未来几十年,岛屿边缘一个像素的范围会被海水淹没。具体来说如果一块陆地像素与海洋相邻(上下左...原创 2019-03-20 09:32:20 · 326 阅读 · 0 评论 -
递归实现排列型枚举(递归)
把 1~n 这 n 个整数排成一行后随机打乱顺序,输出所有可能的次序。输入格式一个整数n。输出格式按照从小到大的顺序输出所有方案,每行1个。首先,同一行相邻两个数用一个空格隔开。其次,对于两个不同的行,对应下标的数一一比较,字典序较小的排在前面。数据范围1 ≤ n ≤ 9输入样例:3输出样例:1 2 31 3 22 1 32 3 13 1 23 2 1解题思...原创 2019-03-03 18:42:07 · 1430 阅读 · 0 评论 -
递归实现组合型枚举(递归)
从 1~n 这 n 个整数中随机选出 m 个,输出所有可能的选择方案。输入格式两个整数 n,m ,在同一行用空格隔开。输出格式按照从小到大的顺序输出所有方案,每行1个。首先,同一行内的数升序排列,相邻两个数用一个空格隔开。其次,对于两个不同的行,对应下标的数一一比较,字典序较小的排在前面(例如1 3 5 7排在1 3 6 8前面)。数据范围n&gt;0 ,0≤m≤n ,n+(n...原创 2019-03-03 18:23:36 · 1221 阅读 · 0 评论 -
递归实现指数型枚举(递归)
从 1~n 这 n 个整数中随机选取任意多个,输出所有可能的选择方案。输入格式输入一个整数n。输出格式每行输出一种方案。同一行内的数必须升序排列,相邻两个数用恰好1个空格隔开。对于没有选任何数的方案,输出空行。本题有自定义校验器(SPJ),各行(不同方案)之间的顺序任意。数据范围1≤n≤15输入样例:3输出样例:322 311 31 21 2 3引例:如...原创 2019-03-03 17:55:44 · 441 阅读 · 0 评论