算法笔记
学习算法的心得与记录
西叶胡杨
这个作者很懒,什么都没留下…
展开
-
图论之Huffman编码(自底向上)
Huffman编码, 用C++实现,自底而上构建。推导哈夫曼树的构造过程,并且完成题目最后附上代码原创 2022-04-26 00:45:42 · 725 阅读 · 0 评论 -
贪心算法之拦截导弹(C++)
拦截导弹题目描述某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。输入每个测试文件只包含一组测试数据,每组输入若干个整数,表示导弹依次飞来的高度(雷达给出的高度数据是不大于30000的正整数)。输出对于每组输入数据,第一行输出这套系统最多能拦截多少导弹,第二行输出如果要拦截所有导弹原创 2022-04-23 22:43:17 · 3080 阅读 · 0 评论 -
回溯算法之跳马问题
跳马问题在5*5格的棋盘上,有一只中国象棋的马,从(1,1)点出发,按日字跳马,它可以朝8个方向跳,但不允许出界或跳到已跳过的格子上,要求其跳遍整个棋盘。输出跳遍整个棋盘的不同方案总数。例如其中的一种跳法为: 1 16 21 10 25 20 11 24 15 22 17 2 19 6 9 12 7 4 23 14 3 18 13 8 5输出跳遍整个棋盘的不同方案总数。思路分析跳马的方向共有八个方原创 2022-04-07 21:02:35 · 3722 阅读 · 0 评论 -
回溯算法之选书问题
选书问题学校放寒假时,信息学竞赛辅导老师有A,B,C,D,E五本书,要分给参加培训的张、王、刘、孙、李五位同学,每人只能选一本书。老师事先让每个人将自己喜欢的书填写在如下的表格中。然后根据他们填写的表来分配书本,希望设计一个程序帮助老师求出所有可能的分配方案,使每个学生都满意。输入无输入。输出输出所有选书方案,每种方案六行;每一行输出方案数,格式:answer XX:(XX为方案数)接下来五行输出五位学生所选的书,五位学生姓名用"Student Zhang, Student Wang, St原创 2022-04-07 11:05:22 · 685 阅读 · 0 评论 -
回溯算法之分工问题
分工问题题目描述:**【例5.6】**设有A,B,C,D,E五人从事J1,J2,J3,J4,J5五项工作,每人只能从事一项,他们的效益如下。每人选择五项工作中的一项,在各种选择的组合中,找到效益最高的的一种组合输出。输入无输入。输出前面五行,输出五人分配的工作;最后一行输出:supply:最佳效益值。(参考样例输出)样例输出A:J5B:J3C:J4D:J1E:J2supply:50源码:#include <iostream>#include <cst原创 2022-04-06 21:59:37 · 452 阅读 · 0 评论 -
回溯算法之全排列问题
全排列输入整数n,列举出全排列的所有情况。#include<iostream>using namespace std;int n;void pathAdd(int *path,int a){ for(int i=0;i<n;i++){ if(path[i]==0){ path[i]=a; break; } }}void copyarray(int *a,int *b){ for(int i=0;i<n;i++){ a[i]=b[i]; }原创 2022-04-05 23:22:34 · 154 阅读 · 0 评论 -
回溯算法之马的遍历
马的遍历题目:中国象棋半张棋盘如图4(a)所示。马自左下角往右上角跳。今规定只许往右跳,不许往左跳。比如图4(a)中所示为一种跳行路线,并将所经路线打印出来。打印格式为:0,0->2,1->3,3->1,4->3,5->2,7->4,8输入无输入。输出顺序输出马跳过的各点坐标。注意:要求所有解中,跳跃最少次数的一组解。源码:#include<iostream>#include<cstdlib>using namespace原创 2022-04-05 23:20:11 · 1274 阅读 · 0 评论