![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
文章平均质量分 75
desirepath
这个作者很懒,什么都没留下…
展开
-
输出整数的所有划分
Description:对于一个整数m,m > 0,它可以写成t个整数的和的形式(t>0):m = z1 + z2 + … + zt ,其中zi > 0且为整数(1≤i≤t)这t个整数就是整数m的一种划分。比如整数4有以下5种划分:43+12+22+1+11+1+1+1Input第一行是一个整数n,代表有n个测试用例接下来的n行每一行是一个整数m原创 2015-12-31 14:28:26 · 1979 阅读 · 0 评论 -
按字典序输出数组的全排列
Description 输入一个数字n,输出从1~n组成的数字的全排列,每个排列占一行,输出按照数值升序排列比如输入2,则输出是:1221又如输入3,则输出是:123132213231312321Input 第一行是一个整数m,代表有m个测试用例接下来的m行,每行是一个整数n,0 Output 对于每个用例,输出它原创 2016-01-02 11:08:47 · 7540 阅读 · 0 评论 -
背包九讲 c++实现完整代码
背包九讲 c++实现完整代码1. 01背包2. 完全背包3. 多重背包4. 混合三种背包5. 二维费用的背包6. 分组的背包7. 有依赖的背包8. 泛化物品9. 背包问题的变化附测试用例和输入格式说明原创 2017-05-11 19:58:39 · 5639 阅读 · 3 评论 -
POJ 1849. Two 树形DP解法 c++代码
题目等价于:所有边权值和的两倍 - 树直径上边的权值和解题思路:树形dpdp[i][0]:结点i最长枝的长度dp[i][1]:结点i第二长枝的长度对所有结点的dp[i][0] + dp[i][1]求最大代码:#include #include using namespace std;#define maxN 100005int head[maxN], dp原创 2017-05-11 14:10:30 · 338 阅读 · 0 评论 -
POJ 1018. Communication System 动态规划解法
POJ 1018. Communication System 动态规划解法题意简述c++AC代码简单测试样例输出结果原创 2017-05-03 10:35:05 · 751 阅读 · 0 评论 -
c++实现二叉树的插入、删除、查询、遍历和树形打印
c++实现二叉树的:中序遍历、前序遍历、后序遍历插入、删除、根据键值查询树形打印获取键值最大或最小的结点获取键值大于当前结点的最小结点获取结点总数获取树高原创 2017-05-01 17:28:27 · 4137 阅读 · 1 评论 -
POJ1007.DNA Sorting
DescriptionOne measure of ``unsortedness'' in a sequence is the number of pairs of entries that are out of order with respect to each other. For instance, in the letter sequence ``DAABEC'', this m原创 2016-03-18 15:14:35 · 420 阅读 · 0 评论 -
单源最短路径--Dijkstra算法
Description 某省自从实行了很多年的畅通工程计划后,终于修建了很多路。不过路多了也不好,每次要从一个城镇到另一个城镇时,都有许多种道路方案可以选择,而某些方案要比另一些方案行走的距离要短很多。这让行人很困扰。现在,已知起点和终点,请你计算出要从起点到终点,最短需要行走多少距离。 Input 本题目包含多组数据,请处理到文件结束。每组数据第一原创 2016-01-13 20:16:29 · 1080 阅读 · 0 评论 -
寻找前k大的数
Description写一个程序找出N个整数里面前K大的整数,输出按照降序排列。Input输入有多个测试用例,每个测试用例是两行:第1行是两个整数N和K,中间用空格隔开(N ≥ K)第2行有N个整数,每两个数字中间用空格隔开输入以EOF结束Output对于每一个测试用例,输出一行,K个整数,就是它的前K大的整数,按照降序排列输出,原创 2016-01-10 18:25:22 · 604 阅读 · 0 评论 -
堆排序
Description堆排序有以下两个操作(以最大堆为例):1、 建立最大堆2、 移动第一个元素,调整最大堆 本题要求你写一个堆排序。Input每一行是一个测试用例,包含n+1个整数。第一个整数n代表该行有n个整数需要进行堆排序,后面的n个整数即需要排序的对象。输入以EOF结束。Output对于每一个测试用例,输出它每个操作之后这原创 2016-01-10 16:49:12 · 595 阅读 · 0 评论 -
迷宫最短路径
Description为了测试某种药物对小白鼠方向感的影响,生物学家在实验室做了一个矩形迷宫,入口和出口都确定为唯一的,且分布在矩形的不同边上。现在让你算出小白鼠最短需要走多少步,才可以从入口走到出口。Input共N+1行,第一行为N(N=0表示输入结束),以下N行N列0-1矩阵,1表示不能通过,0表示可以通过(左上角和右下角为0,即入口和出口),其中N。原创 2016-01-09 16:48:50 · 1149 阅读 · 0 评论 -
输出汉诺塔的移动步骤
对于汉诺塔问题的求解,可以通过以下三个步骤实现:将塔A上的n-1个碟子借助塔C先移到塔B上。把塔A上剩下的一个碟子移到塔C上。将n-1个碟子从塔B借助塔A移到塔C上。#include using namespace std;void hannuo(int a, int b, int c, int n) { if (n == 1) {原创 2016-01-09 14:56:04 · 3312 阅读 · 0 评论 -
POJ 2342. Anniversary party 简单树形DP c++ 代码
#include #include #include #include using namespace std;#define maxN 6005int N, L, K;int dp[maxN + 1][2], father[maxN + 1];bool visited[maxN];void treeDp(int index) { if (visited[index]) r原创 2017-05-10 16:16:06 · 425 阅读 · 0 评论