计算机算法设计与分析
计算机算法设计与分析
Ayakanoinu
这个人不懒,但是也不想添加个人介绍
展开
-
计算机算法设计与分析 工作安排问题
问题描述:设有n件工作分配给n个人,将工作i分配给第j个人所需的费用为cij。试设计一个算法,为每个人都分配一件不同的工作,并使得总费用达到最小。输入:第1行有1个正整数n(1≤n≤20),接下来的n行,每行n个数,表示工作费用。输出:计算的最小总费用样例输入:310 2 32 3 43 4 5样例输出:9继续采用分支限界法,每个节点中存放的是目前的安排状况...原创 2019-12-10 11:00:10 · 309 阅读 · 0 评论 -
计算机算法设计与分析 旅行售货员问题
旅行售货员问题需要用到分支限界法,分支限界法可以理解为广搜加剪枝。针对这个题,需要用到这样几个变量:Map数组存放整个题目的地图,Node记录广搜过程中的每个状态,这个结构体中,root数组记录从出发点到当前状态经过的路线,dis记录目前状态下的可能最优值,f记录目前遍历了几个城市,tar记录有哪几个城市已经遍历过了。其中dis记录的可能最优值需要解释一下,这个值是由两部分组成,第一部分是已经...原创 2019-12-10 10:56:25 · 927 阅读 · 0 评论 -
计算机算法设计与分析 N后问题
很经典的N后问题,实际上是一个回溯法,用课本上的模板即可,每次遍历这一行皇后的位置,如果符合条件就在此基础上继续深搜,实际上可以将回溯理解为深搜加剪枝。最后将输出全部的放置方案。代码如下:#include<bits/stdc++.h> using namespace std; int pos[25]; int n; bool ch...原创 2019-12-03 13:56:14 · 275 阅读 · 0 评论 -
计算机算法设计与分析 Radar Installation
Assume the coasting is an infinite straight line. Land is in one side of coasting, sea in the other. Each small island is a point locating in the sea side. And any radar installation, locating on the ...原创 2019-11-23 16:18:30 · 174 阅读 · 0 评论 -
计算机算法设计与分析 Huffman编码问题
哈夫曼编码问题实际上就是一棵最优二叉树,出现次数多的节点的高度要低,根据最优二叉树的建树规则,从头开始选择权值最低的两个节点(子树)进行合并,合并后放入优先队列,直到整个队列只剩下一个队首元素,结束遍历。输出哈夫曼编码只需要再遍历一遍这棵树,利用一个字符串来记录路径上的选择,当到达叶子节点时输出路径和存放的字符。二叉树的很多规则已经记得不清楚了,可能有些写法不是很标准。代码如下:#inclu...原创 2019-11-19 11:46:02 · 382 阅读 · 0 评论 -
计算机算法设计与分析 大学生电影节观影问题
很典型的贪心问题,首先对输入的数据排序,当结束时间相同时,根据开始时间排序,开始时间早的放在前面,当结束时间不同时,根据结束时间排序,结束时间早的放在前面,之后进行贪心,如果下一个电影的开始时间要大于当前所看的电影的结束时间,表示可以继续看,计数加一即可。代码如下:#include<bits/stdc++.h>using namespace std;int N;struc...原创 2019-11-19 11:38:05 · 643 阅读 · 0 评论 -
计算机算法设计与分析 租用游艇问题
长江俱乐部在长江设置了n个游艇出租站1,2,…n,游客可在这些游艇出租站租用游艇,并在下游的任何一个游艇出租站归还游艇。游艇出租站i到游艇出租站j之间的租金为r(i,j),设计一个算法,计算出从出租站1到出租站n所需要的最少租金。测试用例:3(站数)5 15(第一站到其他相应各站的租金)7(第二站到其他相应各站的租金)根据题意,先将输入的各站点之间的费用存入数组,这里可以通过位置表示出...原创 2019-11-09 19:32:02 · 1158 阅读 · 0 评论 -
计算机算法设计与分析 数字三角形
3数字三角形问题::给定一个有n行数字组成的数字三角形,如下图所示: 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5设计算法,计算从三角形的顶端至底的一条路径,使该路径经过的数字总和最大。根据题意,将数字三角形抽象为二维数组,不难发现,可以从下而上进行处理,即初始化d...原创 2019-11-09 19:24:19 · 452 阅读 · 0 评论 -
计算机算法设计与分析 找零钱问题
原题目为:Tom在自动售货机上买了一瓶饮料,售价37美分,他投入了1美元(1美元 = 100美分),现在自动售货机需要找钱给他。售货机中现在有6种面额的硬币:1美分,2美分,5美分,11美分,20美分,50美分,每种硬币的数量充足。现在要求使用最少数量的硬币,给Tom找钱,求出这个最少数量是多少。为了具有一般性,做一下改动,TOM投入了n枚美元买m瓶37美分一瓶的饮料,问找回来的最少硬币数目是...原创 2019-11-09 15:48:22 · 902 阅读 · 0 评论 -
计算机算法设计与分析 最长递增子序列
求一个字符串的最长递增子序列的长度。设计基于动态规划思想的算法。如:dabdbf最长递增子序列就是abdf,长度为4输入第一行一个整数0<n<20,表示有n个字符串要处理,随后的n行,每行有一个字符串,该字符串的长度不会超过10000。输出字符串的最长递增子序列的长度样例输入3aaaababcabklmncdefg样例输出137根据题意,到当前位置的最长递增子序...原创 2019-11-02 21:03:21 · 320 阅读 · 0 评论 -
计算机算法设计与分析 最大子段和问题
输入的第一行包含一个整数m,表示下面共有m组测试数据。每组测试数据一共包含两行数据,第1行给出正整数K( < 10000 ),第2行给出K个整数,中间用空格分隔。当K为0时,输入结束,该用例不被处理.在1行里输出最大和。若所有K个元素都是负数,则定义其最大和为0。Sample Input6-2 11 -4 13 -5 -210-10 1 2 3 4 -5 -23 3 7 -216...原创 2019-11-02 21:02:26 · 423 阅读 · 0 评论 -
计算机算法设计与分析 最长子序列
基本描述:参见教材P52。输入:输入第一行给出一个整数N(0<N<100)表示待测数据组数。接下来每组数据两行,分别为待测的两组字符串。每个字符串长度不大于1000.。输出每组测试数据输出一个整数,表示最长公共子序列长度。每组结果占一行。样例输入:2asdfadfsd123abcabc123abc样例输出36额外要求:在输出最长公共子序列长度的基础上,设计算法,...原创 2019-10-29 13:17:11 · 237 阅读 · 0 评论 -
计算机算法设计与分析 矩阵连乘问题
矩阵链连乘问题:给定n个矩阵{A1,A2,…,An},其中Ai与Ai+1是可乘 的,i=1,2…,n-1。如何确定计算矩阵连乘积的计算次序,使得依此次序 计算矩阵连乘积需要的数乘次数最少。输入数据:共m+1行;第一行为测试数据的组数m;以后每行n+1个正 整数,表示n个矩阵的行列值。输出:最少次数及连乘的计算次序。样例输入:15,10,4,6,10,2样例输出:348(A1(A2...原创 2019-10-29 13:12:28 · 784 阅读 · 0 评论 -
计算机算法设计与分析 最大子数组问题
只需要从头开始遍历数组,用一个中间值记录目前的前缀和,如果前缀和大于零,那么说明后面的部分加上已有的的部分可能会出现更大的子数组和,如果前缀和小于零,那么说明后面的部分加上已有的部分会使整个和更小,所以将前缀和置0,从新开始计算,用数组存放中间过程的前缀和,找出最大值即可。代码如下:#include<bits/stdc++.h>using namespace std;int d...原创 2019-10-08 08:59:10 · 230 阅读 · 0 评论 -
计算机算法设计与分析 循环赛日程表
设有n=2k个运动员要进行网球循环赛。现要设计一个满足以下要求的比赛日程表:每个选手必须与其他n-1个选手各赛一次,每个选手一天只能赛一次,循环赛一共进行n-1天。课本上的方法是从大向小推出整个日程表,可以采用更方便的从小向大推日程表,将大表分成许多小块,以左上角的块为基准,右上角的块等于左上角块对应位置的值加上2的k-1次方,右下角的块等于左上角的块,左下角的块等于右上角的块,不断扩大已经完成...原创 2019-10-08 08:38:17 · 624 阅读 · 0 评论 -
计算机算法设计与分析 递归实现快速排序和随机化实现快速排序
递归实现快速排序主要在于哨兵的选择和分部分进行排序,每次递归将左右两部分分开进行排序,选取子数列的第一个元素作为哨兵,后面按照方法排序即可。#include<bits/stdc++.h>using namespace std;int num[1005];int partition(int l,int r){int i=l,j=r+1;int tar=num[l];wh...原创 2019-10-01 13:19:52 · 766 阅读 · 1 评论 -
计算机算法设计与分析 递归实现归并排序和非递归实现归并排序
递归实现归并排序输入排序的数组的长度,程序用随机数生成对应的数组,之后递归调用排序,排序过程中思想类似于二分,当每个最小分组中只有一个元素时开始返回,直到排完整个数组。#include<bits/stdc++.h>using namespace std;int num[1005];void Merge(int l,int mid,int r){ int temp[1005...原创 2019-10-01 13:18:40 · 224 阅读 · 0 评论 -
计算机算法设计与分析 大整数乘法
大整数乘法问题描述求两个不超过200位的非负整数的积。输入形式有两行,每行是一个不超过200位的非负整数,没有多余的前导0。输出形式一行,即相乘后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。样例输入12345678909876543210样例输出12193263111263526900首先大整数乘法是因为一般的整数乘法存在位数的限制,直接...原创 2019-09-28 17:48:29 · 1494 阅读 · 0 评论 -
计算机算法设计与分析 单峰序列
1.单峰序列问题描述给定含有n个不同整数的数组L=<a1,a2,…,an>,如果L中存在ai,使得a1<a2<…<ai-1ai+1>…>an。则称L是单峰的,并称ai是L的“峰顶”。假设L是单峰的,设计一个算法,找L的峰顶。输入形式一共包括两行,第一行一个整数N,表示数组中整数的个数。接下来的一行中包含N个整数,以空格分隔输出形式如果这些整数...原创 2019-09-28 17:45:26 · 1418 阅读 · 0 评论