算法设计与分析
文章平均质量分 69
young_Tao
这个作者很懒,什么都没留下…
展开
-
装载问题
装载问题描述有两艘船,载重量分别是c1、 c2,n个集装箱,重量是wi (i=1…n),且所有集装箱的总重量不超过c1+c2。确定是否有可能将所有集装箱全部装入两艘船。输入多个测例,每个测例的输入占两行。第一行一次是c1、c2和n(n<=10);第二行n个整数表示wi (i=1…n)。n等于0标志输入结束。输出对于每个测例在单独的一行内输出Yes或No。输入样例7 8 2 8 7 7 9 2原创 2016-10-08 21:47:26 · 749 阅读 · 0 评论 -
计算矩阵连乘积
计算矩阵连乘积时限:1000ms 内存限制:10000K 总时限:3000ms描述在科学计算中经常要计算矩阵的乘积。矩阵A和B可乘的条件是矩阵A的列数等于矩阵B的行数。若A是一个p×q的矩阵,B是一个q×r的矩阵,则其乘积C=AB是一个p×r的矩阵。计算C=AB总共需要p×q×r次乘法。现在的问题是,给定n个矩阵{A1,A2,…,An}。其中Ai与Ai+1是可乘的,i=1,2原创 2016-11-12 19:02:58 · 1304 阅读 · 0 评论 -
花生米(二)
花生米(二)时限:1000ms 内存限制:10000K 总时限:3000ms描述五一长假第二天,Tom和Jerry在仓库散步的时候又发现了一堆花生米(这个仓库还真奇怪)。这次Tom制定分花生米规则如下: 1、Tom和Jerry轮流从堆中取出k粒花生米吃掉,k可以是1,5,10中的任意一个数字; 2、为显示规则的公平性,Jerry可以选择先取或者原创 2016-11-12 19:05:24 · 442 阅读 · 0 评论 -
石子合并
石子合并时限:1000ms 内存限制:10000K 总时限:3000ms描述在一个圆形操场的四周摆放着n堆石子(n4 4 5 9 score: 08 5 9 score: 813 9 score: 8 + 13 = 2122 score: 8 + 13 + 22 = 43 输入可能有多组测试数据。 当输入n=0时结束! 第一行为石子堆数n(1原创 2016-11-12 19:06:11 · 347 阅读 · 0 评论 -
旅游预算
旅游预算时限:1000ms 内存限制:10000K 总时限:3000ms描述一个旅行社需要估算乘汽车从某城市到另一城市的最小费用,沿路有若干加油站,每个加油站收费不一定相同。旅游预算有如下规则: 若油箱的油过半,不停车加油,除非油箱中的油不可支持到下一站;每次加油时都加满;在一个加油站加油时,司机要花费2元买东西吃;司机不必为其他意外情况而准备额外的油;汽车开出时在起点加满油箱;转载 2016-11-12 19:08:52 · 870 阅读 · 0 评论 -
电子老鼠闯迷宫(广度优先算法bfs)
电子老鼠闯迷宫时限:1000ms 内存限制:10000K 总时限:3000ms描述有一只电子老鼠被困在如下图所示的迷宫中。这是一个12*12单元的正方形迷宫,黑色部分表示建筑物,白色部分是路。电子老鼠可以在路上向上、下、左、右行走,每一步走一个格子。现给定一个起点S和一个终点T,求出电子老鼠最少要几步从起点走到终点。 输入本题包含一个测例。在测例的第一行有四个由空格分隔的整数,分别表示起点的坐标...原创 2016-11-12 19:10:10 · 1485 阅读 · 0 评论 -
跳马(广度优先搜索)
跳马时限:1000ms 内存限制:10000K 总时限:3000ms描述在国际象棋中,马的走法与中车象棋类似,即俗话说的“马走日”,下图所示即国际象棋中马(K)在一步能到达的格子(其中黑色的格子是能到达的位置)。现有一200*200大小的国际象棋棋盘,棋盘中仅有一个马,给定马的当前位置(S)和目标位置(T),求出马最少需要多少跳才能从当前位置到达目标位置。 输入本题包含多个测例。输入数据的第一行...原创 2016-11-12 19:11:44 · 1060 阅读 · 0 评论 -
加1乘2平方
加1乘2平方时限:1000ms 内存限制:10000K 总时限:3000ms描述最简单的队列的使用#include <iostream>#include <queue>using namespace std;queue<int> q1;int main(){int temp, x;q1.push(5);//入队q1.push(8);//入队temp = q1....原创 2016-11-12 19:13:40 · 1041 阅读 · 0 评论 -
六数码问题
六数码问题时限:1000ms 内存限制:10000K 总时限:3000ms描述现有一两行三列的表格如下:A B CD E F把1、2、3、4、5、6六个数字分别填入A、B、C、D、E、F格子中,每个格子一个数字且各不相同。每种不同的填法称为一种布局。如下:1 3 52 4 6布局12 5 64 3 1布局2定义α变换如下原创 2016-11-12 19:14:52 · 513 阅读 · 0 评论 -
独轮车
独轮车时限:1000ms 内存限制:10000K 总时限:3000ms描述独轮车的轮子上有红、黄、蓝、白、绿(依顺时针序)5种颜色,在一个如下图所示的20*20的迷宫内每走一个格子,轮子上的颜色变化一次。独轮车只能向前推或在原地转向。每走一格或原地转向90度均消耗一个单位时间。现给定一个起点(S)和一个终点(T),求独轮车以轮子上的指定颜色到达终点所需的最短时间。转载 2016-11-12 19:18:58 · 622 阅读 · 0 评论 -
木乃伊迷宫
木乃伊迷宫时限:1000ms 内存限制:10000K 总时限:3000ms描述木乃伊地下宫殿是一个6行6列的迷宫。作为敢到木乃伊地下宫殿里去探险的你,有没有跟木乃伊抓迷藏的心理准备呵!游戏在木乃伊所在的迷宫里展开,任务就是尽快赶到出口。你一次只能走一步,而木乃伊可以走两步,但木乃伊是很笨的,他总是先尽量跟你达到同一列,如果已经是同一列了,他才会像你走来,有墙的地方人和木乃伊都不能转载 2016-11-12 19:20:40 · 629 阅读 · 1 评论 -
用递归算法求解汉诺塔问题
古代有一个梵塔,塔内有三个座A、B、C,A座上有64个盘子,盘子大小 不等,大的在下,小的在上(如图)。有一个和尚想把这64个盘子从A座移到C座,但每次只能允许移动一个盘子,并且在移动过程中,3个座上的盘子 始终保持大盘在下,小盘在上。在移动过程中可以利用B座,要求输出移动的步骤。本题可以使用递归的思想,移动n个可以分解为先移动n-1个,然后移动剩下的一个,具体的代原创 2017-10-30 23:28:43 · 1615 阅读 · 0 评论 -
排序算法之插入排序
插入排序直接插入排序(Straight Insertion Sort)的基本思想是:把n个待排序的元素看成为一个有序表和一个无序表。开始时有序表中只包含1个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,将它插入到有序表中的适当位置,使之成为新的有序表,重复n-1次可完成排序过程。图解实例:代码实现://如果不使用len = getarraylength(arr); 运行...原创 2018-05-10 11:09:51 · 226 阅读 · 0 评论 -
防卫导弹
防卫导弹问题即求一组数的最长递增子序列原创 2016-11-12 19:00:43 · 448 阅读 · 0 评论 -
最长公共子序列
最长公共子序列时限:1000ms 内存限制:200000K 总时限:3000ms描述一个给定序列的子序列是在该序列中删去若干元素后得到的序列。确切地说,若给定序列X=,则另一序列Z=是X的子序列是指存在一个严格递增的下标序列 ,使得对于所有j=1,2,…,k有:Xij = Zj如果一个序列S即是A的子序列又是B的子序列,则称S是A、B的公共子序列。求A、B所有原创 2016-11-12 18:59:47 · 356 阅读 · 0 评论 -
八皇后问题(回溯法)
8皇后问题时限:1000ms 内存限制:10000K 总时限:3000ms描述:输出8皇后问题所有结果。输入:没有输入。输出:每个结果第一行是No n:的形式,n表示输出的是第几个结果;下面8行,每行8个字符,‘A’表示皇后,‘.’表示空格。不同的结果中,先输出第一个皇后位置靠前的结果;第一个皇后位置相同,先输出第二个皇后位置靠前的结果;依次类推。输入样例:无输入输出样例:输出的前几行:No 1...原创 2016-10-01 15:14:31 · 326 阅读 · 0 评论 -
二分查找
二分查找原创 2016-11-12 18:36:16 · 248 阅读 · 0 评论 -
归并排序
归并排序时限:1000ms 内存限制:10000K 总时限:3000ms描述给定一个数列,用归并排序算法把它排成升序。 输入第一行是一个整数n(n不大于10000),表示要排序的数的个数;下面一行是用空格隔开的n个整数。 输出输出排序后的数列,每个数字占一行。 输入样例53 2 1 4 5 输出样例1原创 2016-11-12 18:39:07 · 240 阅读 · 0 评论 -
快速排序
快速排序时限:1000ms 内存限制:10000K 总时限:3000ms描述给定一个数列,用快速排序算法把它排成升序。 输入第一行是一个整数n(n不大于10000),表示要排序的数的个数;下面一行是用空格隔开的n个整数。 输出输出排序后的数列,每个数字占一行。 输入样例53 2 1 4 5 输出样例1原创 2016-11-12 18:41:41 · 294 阅读 · 0 评论 -
走迷宫
走迷宫时限:1000ms 内存限制:10000K 总时限:3000ms描述判断是否能从迷宫的入口到达出口 输入先输入两个整数表示迷宫的行数m和列数n,再输入口和出口的坐标,最后分m行输入迷宫,其中1表示墙,0表示空格每个数字之间都有空格。 输出若能到达,则输出"Yes",否则输出"No",结果占一行。 输入样例3 30 02原创 2016-11-12 18:43:29 · 358 阅读 · 0 评论 -
穷举n位二进制数
穷举n位二进制数时限:100ms 内存限制:10000K 总时限:300ms描述输入一个小于20的正整数n,要求按从小到大的顺序输出所有的n位二进制数,每个数占一行。 输入输入一个小于20的正整数n。 输出按从小到大的顺序输出所有的n位二进制数,每个数占一行。 输入样例3 输出样例0000010100原创 2016-11-12 18:46:08 · 672 阅读 · 0 评论 -
循环赛日程表
循环赛日程表时限:1000ms 内存限制:10000K 总时限:3000ms描述用分治算法生成循环赛日程表(1到2的n次方个人) 输入一个整数n 输出循环赛日程表(1到2的n次方个人) 输入样例3 输出样例1 2 3 4 5 6 7 82 1 4 3 6 5 8 73 4 1 2 7 8 5 64 3原创 2016-11-12 18:48:12 · 870 阅读 · 0 评论 -
0-1背包问题(回溯法)
0-1背包问题时限:1000ms 内存限制:10000K 总时限:3000ms描述需对容量为c 的背包进行装载。从n 个物品中选取装入背包的物品,每件物品i 的重量为wi ,价值为pi 。对于可行的背包装载,背包中物品的总重量不能超过背包的容量,最佳装载是指所装入的物品价值最高。 输入多个测例,每个测例的输入占三行。第一行两个整数:n(n<=10)和c,第二行n个整数分别是w1到wn,第三...原创 2016-11-12 18:49:15 · 454 阅读 · 0 评论 -
装载问题
装载问题时限:1000ms 内存限制:10000K 总时限:3000ms描述有两艘船,载重量分别是c1、 c2,n个集装箱,重量是wi (i=1…n),且所有集装箱的总重量不超过c1+c2。确定是否有可能将所有集装箱全部装入两艘船。 输入多个测例,每个测例的输入占两行。第一行一次是c1、c2和n(n 输出对于每个测例在单独的一行内输出Yes原创 2016-11-12 18:51:40 · 5016 阅读 · 0 评论 -
8皇后问题(c++)
8皇后问题时限:1000ms 内存限制:10000K 总时限:3000ms描述输出8皇后问题所有结果。 输入没有输入。 输出每个结果第一行是No n:的形式,n表示输出的是第几个结果;下面8行,每行8个字符,‘A’表示皇后,‘.’表示空格。不同的结果中,先输出第一个皇后位置靠前的结果;第一个皇后位置相同,先输出第二个皇后位置靠前的结果;依次类推。 输入样例 输出样例输出的前几行:No 1:A.....原创 2016-11-12 18:52:53 · 448 阅读 · 0 评论 -
素数环问题
素数环问题时限:1000ms 内存限制:10000K 总时限:3000ms描述把1到20这重新排列,使得排列后的序列A满足:a. 任意相邻两个数之和是素数b. 不存在满足条件a的序列B使得:A和B的前k(0 输入没有输入。 输出输出A,两个数字之间用一个空格隔开,第一个数字前面和最后一个数字后面没有空格。 输入样例原创 2016-11-12 18:56:08 · 583 阅读 · 1 评论 -
求图像的周长
求图像的周长时限:1000ms 内存限制:10000K 总时限:3000ms描述给一个用 . 和X表示的图形,图形在上、下、左、右、左上、左下、右上、右下8个方向都被看作是连通的,并且图像中间不会出现空洞,求这个图形的边长。 输入首先给出m、n、x、y四个正整数,下面给出m×n的图形,x、y表示点击的位置,全0表示结束。 输出点击的图形的周长。转载 2016-11-12 18:56:54 · 1279 阅读 · 0 评论 -
平衡二叉树代码
先将平衡二叉树代码存在这里,具体的原理解释,以后有时间再补充代码:#include<iostream>#define maxn 1000using namespace std;struct node{ int data; int height; node *lchild, *rchild;};int key[maxn];int n;...原创 2018-08-11 16:47:53 · 493 阅读 · 0 评论