算法与分析课程
binarySearchTrees
这个作者很懒,什么都没留下…
展开
-
算法与分析课程_回溯算法_实验五_子集和问题_JAVA
2.子集和问题。问题描述:给定集合S,S中有n个正整数,M是一个正整数。子集和问题判定是否存在S的一个子集S1,使得S1中各元素之和等于M。请设计回溯法求解子集和问题,如果问题无解,输出“No Solution”,问题有解,则输出满足子集S1中各元素的值。感觉写程序的耦合度有点高,代码也很冗长Main.class/** * @description 子集和问题 * @author binarySearchTrees * date 2020-12-17 22:00 * */import原创 2020-12-17 22:13:59 · 442 阅读 · 0 评论 -
算法与分析课程_动态规划算法_拼题网_习题2_0-1背包_C++
2 0-1背包给定n(n<=100)种物品和一个背包。物品i的重量是wi,价值为vi,背包的容量为C(C<=1000)。问:应如何选择装入背包中的物品,使得装入背包中物品的总价值最大? 在选择装入背包的物品时,对每种物品i只有两个选择:装入或不装入。不能将物品i装入多次,也不能只装入部分物品i。输入格式:共有n+1行输入: 第一行为n值和c值,表示n件物品和背包容量c; 接下来的n行,每行有两个数据,分别表示第i(1≤i≤n)件物品的重量和价值。输出格式:输出装入背包中物品的最大总价值原创 2020-12-12 20:17:20 · 460 阅读 · 0 评论 -
算法与分析课程_动态规划算法_拼题网_习题1_最大子段和_C++
1 最大子段和给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。当所给的整数均为负数时,定义子段和为0。要求算法的时间复杂度为O(n)。输入格式:输入有两行:第一行是n值(1<=n<=10000);第二行是n个整数。输出格式:输出最大子段和。输入样例:在这里给出一组输入。例如:6-2 11 -4 13 -5 -2输出样例:在这里给出相应的输出。例如:2代码:ma原创 2020-12-12 10:59:56 · 484 阅读 · 0 评论 -
算法与分析课程_回溯算法_拼题网_习题6_工作分配问题_C++
6 工作分配问题设有n件工作分配给n个人。将工作i分配给第j个人所需的费用为cij 。 设计一个算法,对于给定的工作费用,为每一个人都分配1 件不同的工作,并使总费用达到最小。输入格式:输入数据的第一行有1 个正整数n (1≤n≤20)。接下来的n行,每行n个数,表示工作费用。输出格式:将计算出的最小总费用输出到屏幕。输入样例:在这里给出一组输入。例如:310 2 32 3 43 4 5输出样例:在这里给出相应的输出。例如:9代码:#include<iostre原创 2020-12-12 10:53:28 · 249 阅读 · 0 评论 -
算法与分析课程_回溯算法_拼题网_习题5_666_C++
5 666小明有一张m*n的好习惯记录卡,记录每一天的好习惯目标达成度(数字0-9表示)。某天目标完成达成,就在当天的格子里写上数字6,目标没有完全达成就写上一个小于6的数字(0-5),目标超额完成就写上一个大于6的数字(7-9)。记录卡上如果能找到一条长度为3的路径并且路径上的三个数字都大于等于6(这里的路径是指从某个格子出发,可以向左、右、上、下格子移动,并且不能重复经过一个格子),则小明就能得到一个“666”奖励。请你帮小明统计下他总共能得到多少“666”奖励。输入格式:输入第一行给出两个正整原创 2020-12-12 10:50:13 · 345 阅读 · 0 评论 -
算法与分析课程_回溯算法_拼题网_习题4_整数拆分_C++
4 整数拆分将一个正整数拆分成若干个正整数的和。输入格式:一个正整数n输出格式:若干行,每行一个等式(每个数或者等号间都有一个空格,第一个数前没有空格,最后一个数后面没有空格,数与数之间要求非降序排列)。最后一行给出解的总个数输入样例:在这里给出一组输入。例如:4输出样例:在这里给出相应的输出。例如:4 = 1 + 1 + 1 + 14 = 1 + 1 + 24 = 1 + 34 = 2 + 24代码:#include<iostream>#includ原创 2020-12-12 10:45:22 · 349 阅读 · 1 评论 -
算法与分析课程_回溯算法_拼题网_习题2_N皇后_C++
2 八皇后问题在国际象棋中,皇后是最厉害的棋子,可以横走、直走,还可以斜走。棋手马克斯·贝瑟尔 1848 年提出著名的八皇后问题:即在 8 × 8 的棋盘上摆放八个皇后,使其不能互相攻击 —— 即任意两个皇后都不能处于同一行、同一列或同一条斜线上。例如:现在我们把棋盘扩展到 n×n 的棋盘上摆放 n 个皇后,请问该怎么摆?请编写程序,输入正整数 n,输出全部摆法(棋盘格子空白处显示句点“.”,皇后处显示字母“Q”,每两个字符之间空一格)。输入格式正整数 n(n>0)输出格式若问题有解,原创 2020-12-12 10:41:22 · 837 阅读 · 0 评论 -
算法与分析课程_回溯算法_拼题网_习题1_最佳调度问题_C++
1 最佳调度问题假设有n(n<=20)个任务由k(k<=20)个可并行工作的机器完成。完成任务i需要的时间为ti。 试设计一个算法,对任意给定的整数n和k,以及完成任务i 需要的时间为ti ,i=1~n。计算完成这n个任务的最佳调度,使得完成全部任务的时间最早。输入格式:输入数据的第一行有2 个正整数n和k。第2 行的n个正整数是完成n个任务需要的时间。输出格式:将计算出的完成全部任务的最早时间输出到屏幕。输入样例:在这里给出一组输入。例如:7 32 14 4 16 6 5原创 2020-12-01 21:45:05 · 398 阅读 · 0 评论 -
算法与分析-实验二 枚举与递推
1.由0到4五个数字,组成5位数,每个数字用一次,但十位和百位不能为3(当然万位不能为0),输出所有可能的五位数。核心代码:class Solution {public: vector<vector<int>> nums_combination(vector<int> nums) { vector<vector<int>> res; vector<int> ins(nums); while (next_permuta原创 2020-11-15 10:48:18 · 387 阅读 · 0 评论 -
算法与分析-实验一 算法设计基础
1. 分别用穷举法和欧几里德算法实现求两个整数的最大公约数,并比较算法的效率。核心代码:class Solution {public: int eaMethod(int a,int b) {//穷举法 int res=1; int times = a>b?a:b; for (int i = 1; i <=times;i++) { if (a % i == 0 && b % i == 0) res = i; } return res; }原创 2020-11-15 10:43:21 · 375 阅读 · 0 评论 -
算法与分析-枚举
拼题网/**1 穷举问题-搬砖*2 百鸡问题扩展-N鸡问题*3 输出全排列*4 梅森数*5 换硬币*/1 穷举问题-搬砖某工地需要搬运砖块,已知男人一人搬3块,女人一人搬2块,小孩两人搬1块。如果想用n人正好搬n块砖,问有多少种搬法?输入格式:输入在一行中给出一个正整数n。输出格式:输出在每一行显示一种方案,按照"men = cnt_m, women = cnt_w, child = cnt_c"的格式,输出男人的数量cnt_m,女人的数量cnt_w,小孩的数量cnt_c。请注意,原创 2020-11-11 09:56:42 · 249 阅读 · 0 评论