
算法小练
sdljtyk
自己选择的路,哪怕再苦再累也要豪迈的走下去。
展开
-
最优服务次序问题
最优服务次序问题 设有n个顾客同时等待一项服务,顾客i所需要的服务时间为ti,应如何安排顾客的服务次序,才能使平均等待时间最短?平均等待时间是n个顾客等待服务时间的总和除以n。测试用例:10(顾客数)56 121 99 1000 234 33 55 99 812(所有顾客的服务时间)输出:532(最小平均等待时间)原创 2016-12-27 20:46:23 · 3679 阅读 · 0 评论 -
租用游艇问题
租用游艇问题 长江俱乐部在长江设置了n个游艇出租站1,2,…n,游客可在这些游艇出租站租用游艇,并在下游的任何一个游艇出租站归还游艇。游艇出租站i到游艇出租站j之间的租金为r(i,j),设计一个算法,计算出从出租站1到出租站n所需要的最少租金。测试用例:3(站数)5 15(第一站到其他相应各站的租金)7(第二站到其他相应各站的租原创 2017-01-04 10:05:14 · 6889 阅读 · 1 评论 -
矩阵连乘问题
矩阵连乘问题 给定n个矩阵{A1,A2,…,An},其中Ai与Ai+1是可乘的,i=1,2 ,…,n-1。如何确定计算矩阵连乘积的计算次序,使得依此次序计算矩阵连乘积需要的数乘次数最少。例如: A1={30x35} ; A2={35x15} ;A3={15x5} ;A4={5x10} ;A5={10x20} ;A6={20x25} ;最后的结果为:((原创 2017-01-04 10:01:31 · 1242 阅读 · 0 评论 -
石子合并问题
石子合并问题 在一个圆形操场的四周摆放着n堆石子。现要将石子有次序地合并成一堆。规定每次只能选择相邻的两堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分。试设计一个算法,计算出将n堆石子合并成一堆的最小得分和最大得分。样例输入44 4 5 9样例输出54 43解:石子原创 2017-01-04 09:55:28 · 1022 阅读 · 0 评论 -
整数变换问题
整数变换问题 关于整数i的变换f和g定义如下:f(i)=3i,g(i)=ëi/2û。试设计一个算法,对于给定的2个整数n和m,用最少的变换次数将n变成m。样例输入15 4样例输出4gfgg解:整数变换问题:利用回溯写变换,因为不清楚回溯的终点原创 2016-12-26 11:25:20 · 3188 阅读 · 0 评论 -
HDU1518——Square(正方形问题)
SquareTime Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 13808 Accepted Submission(s): 4376Problem DescriptionGiven a set原创 2016-12-26 10:48:46 · 844 阅读 · 0 评论 -
迷宫问题
迷宫问题 给定一个m × n(m行,n列)的迷宫,迷宫中有两个位置,gloria想从迷宫的一个位置走到另外一个位置,当然迷宫中有些地方是空地,gloria可以穿越,有些地方是障碍,她必须绕行,从迷宫的一个位置,只能走到与它相邻的4个位置中,当然在行走过程中,gloria不能走到迷宫外面去。令人头痛的是,gloria是个没什么方向感的人,因此,她在行走过程中,不能转原创 2016-12-25 20:19:13 · 3992 阅读 · 2 评论 -
数独问题
数独问题样例输出145327698839654127672918543496185372218473956753296481367542819984761235521839764解法1(按坐标):数独问题(以列为主): 都是同一行、原创 2016-12-25 19:48:07 · 3076 阅读 · 0 评论 -
工作分配问题
工作分配问题 设有n件工作分配给n个人。将工作i分配给第j个人所需要的费用为cij。试设计一个算法,为每个人分配1件不同的工作,并使总费用达到最小。样例输入: 3 10 2 3 2 3 4 3 4 5样例输出: 9解:工作分配问题: 由原创 2016-12-25 17:50:29 · 5419 阅读 · 0 评论 -
子集和问题
子集和问题 子集和问题的一个实例为S,c>。其中S={x1,x2,…,xn}是一个正整数的集合,c是一个正整数。子集和问题判定是否存在S的一个子集S1,使得S1中所有元素的和为c。 试设计一个解子集和问题的回溯法。样例输入: 5 10 2 2 6 5 4样例输出: 2 2 6原创 2016-12-25 17:28:51 · 1866 阅读 · 0 评论 -
n后问题
n后问题 在n*n的棋盘上放置彼此不受攻击的n个皇后,按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。n后问题等价于在n*n格的棋盘上放置n个皇后,任何2个皇后不放在同一行或同一列或同一斜线上。样例输入78样例输出4092解法1(暴力):原创 2016-12-25 16:53:19 · 1143 阅读 · 1 评论 -
1000的阶乘
求1000的阶乘 #include #define n 1000int a[10000];int main(){ int k=0,len=0; a[0]=1; for(int i=1;i<=n;i++) { k=0; for(int j=0;j<=len;j++) { a[j]=a[j]*i+k; k=a[j]/10;//进位 a[j]原创 2017-01-04 11:33:31 · 1311 阅读 · 0 评论 -
众数问题
众数问题 给定含有n 个元素的多重集合S,每个元素在S 中出现的次数称为该元素的重数。多重集S中重数最大的元素称为众数。例如,S={1,2,2,2,3,5},其众数为2,其重数为3。要求:对给定的n 个自然数组成的多重集S,计算S 的众数及其重数。样例输入: 6 1 2 2 2 3 5样例原创 2017-01-04 11:45:13 · 991 阅读 · 0 评论 -
排列数字问题
数字排列问题 今有7对数字:两个1,两个2,两个3,...两个7,把它们排成一行。 要求,两个1间有1个其它数字,两个2间有2个其它数字,以此类推,两个7之间有7个其它数字。如下就是一个符合要求的排列:17126425374635当然,如果把它倒过来,也是符合要求的。请你找出另一种符合要求的排列法,并且这个排列法是以74开头的。注原创 2016-12-24 15:29:20 · 1226 阅读 · 0 评论 -
最优合并问题
最优合并问题 给定k个排好序的序列s1,s2,…,sk,用2路合并算法将这k个序列合并成一个序列。假设所采用的2路合并算法合并两个长度分别为m和n的序列需要m+n-1次比较。试设计一个算法确定合并这个序列的最优合并顺序,使所需要的总比较次数最少。测试用例:4(序列数)5 1211 2(序列中的元素数)输出: 78(最差情原创 2016-12-27 20:43:38 · 6450 阅读 · 0 评论 -
最优分解问题
最优自然数分解问题问题描述: 设n是一个正整数。现在将n分解为若干个互不相同的自然数之和,且使这些自然数的乘积最大。样例输入10样例输出30解:最优分解问题: 若a+b等于一个常数,则|a-b|越小,ab就越大。 要使得加数互不相同,又尽可能集中,那加数只能是连续的自然数了。 将n分成从2开始的连续的自然数的和。如果最后剩下一个数,原创 2016-12-27 20:40:48 · 2619 阅读 · 0 评论 -
删数问题
删数问题 给定n位正整数a,去掉其中任意k个数字后,剩下的数字按原次序排列组成一个新的正整数。对于给定的n和k,设计一个算法,找出剩下数字组成的新数最少的删数方案。输入示例: 178543输出: 13解:删数问题:要求删除给定数字n中的 k 个数字使其剩余的数字最小从第一个数字开始扫描,删除第一个不是升序的数字原创 2016-12-27 20:36:33 · 1980 阅读 · 2 评论 -
汽车加油问题
汽车加油问题 一辆汽车加满油后可以行驶n公里,旅途中有加油站,设计一个有效算法,指出应在哪些加油站停靠加油,使沿途加油次数最少。测试用例:7 7 (n k)1 2 34 5 1 6 6(第k个加油站与第k-1个加油站之间的距离,其中第一个代表起点,最后一个代表终点。)输出:4(最少加油次数)解:汽车加油原创 2016-12-27 20:33:13 · 1294 阅读 · 0 评论 -
活动安排问题
活动安排问题 设有n个活动的集合E={1,2,3,…,n},所有的活动要求使用同一资源,而在同一时间内只有一个活动能使用这一资源,每个活动都有使用这一资源的开始时间si和结束时间fi,且si 性质:每次选择具有最早完成时间的相容活动加入集合中。解:活动安排问题: 与会场安排问题类似原创 2016-12-27 20:30:55 · 1280 阅读 · 0 评论 -
会场安排问题
会场安排问题问题描述: 假设要在足够多的会场里安排一批活动,活动的开始时间和结束时间已知,并希望使用尽可能少的会场。设计一个有效的算法进行安排。样例输入51 2312 2825 3527 8036 50样例输出3解:会场安排问题:原创 2016-12-27 20:26:23 · 1909 阅读 · 0 评论 -
素数环问题
素数环问题 素数环是一个计算机程序问题,指的是将从1到n这n个整数围成一个圆环,若其中任意2个相邻的数字相加,结果均为素数,那么这个环就成为素数环。 现在要求输入一个n,求n个数围成一圈有多少种素数环,规定第一个数字是1。样例输入68样例输出1 4 3原创 2016-12-27 20:16:48 · 5154 阅读 · 1 评论 -
半数集问题
半数集问题给定一个自然数n,由n开始可以依次产生半数集set(n)中的数如下:n(1)nÎset(n);(2)在n 的左边加上一个自然数,但该自然数不能超过最近添加数的一半;(3)按此规则进行处理,直至不能添加自然数为止。例如,set(6)={6,16,26,126,36,136}。注意:该半数集是多重集。要求:对于给定的自然数n,计算半数集set(n)中的元素原创 2017-01-04 17:03:47 · 1603 阅读 · 1 评论 -
全排列问题
无重复的全排列:#include#define n 3void dfs(int a[],int t){ if(t==n) { for(int i=0;i<n;i++) { printf("%d\t",a[i]); } printf("\n"); return ; } for(int i=t;i<n;i++) { int temp=a[i]; a原创 2017-01-04 16:43:19 · 521 阅读 · 0 评论 -
排列的字典序问题
排列的字典序问题 n个元素有n!个不同的排列。将这n!个不同的排列按字典序排列,并编号为0,1,2,…,n!-1。给定n个元素及一个排列,计算出这个排列的字典序值,同时给出字典序排列的下一个排列。样例输入: 8 26 4 5 8 1 7 3 样例输出: 8227 26 4 5 8 3 1 7解:原创 2017-01-04 16:35:22 · 1334 阅读 · 0 评论 -
图的m着色问题
图的m着色问题 给定无向连通图和m种不同的颜色。用这些颜色为图G的各顶点着色,每个顶点着一种颜色。是否有一种着色法使G中每条边的两个顶点有不同的颜色。这个问题是图的m可着色判定问题。若一个图最少需要m种颜色才能使图中每条边相连接的两个顶点着不同颜色,称这个数m为这个图的色数。求一个图的色数m称为图的m可着色优化问题。 给定一个图以及m种颜色,请计算出涂色原创 2016-12-25 16:32:33 · 1600 阅读 · 0 评论 -
批处理作业调度问题
批处理作业调度 给定n个作业的集合J={J1,J2,…,Jn}。每一个作业有两项任务分别在两台机器上完成。每个作业必须先由机器1处理,再由机器2处理。作业Ji需要机器j的处理时间为tji,i=1,2,…n,j=1,2。对于一个确定的作业调度,设Fji是作业i在机器j上完成处理的时间。则所有作业在机器2上完成处理的时间和f=F21+F22+…+F2n称为该作业调度的完成时间和。原创 2016-12-25 15:52:55 · 8940 阅读 · 1 评论 -
拉丁矩阵问题
拉丁矩阵问题 现有n种不同形状的宝石,每种宝石有足够多颗。欲将这些宝石排列成m行n列的一个矩阵,m,使矩阵中每一行和每一列的宝石都没有相同的形状。试设计一个算法,计算出对于给定的m和n,有多少种不同的宝石排列方案。输入: 3 3输出: 12解:拉丁矩阵问题:首先给矩阵进行赋值,原创 2016-12-24 17:37:40 · 2645 阅读 · 2 评论 -
电路布线问题
电路布线问题 制作电路板时,将n条连线分布到若干绝缘层上。在同一层的连线不相交。电路布线问题就是要确定将哪些连线安排到第一层上,使该层上有尽可能多的连线。 输入一个整数n代表接线柱的数量,输入n个数代表与上接线柱连接的下接线柱编号样例输入108 7 4 2 5 1 9 3 10 6样例输出原创 2017-01-01 20:31:39 · 3845 阅读 · 1 评论 -
最多约数问题
最多约数问题。正整数x的约数是能整除x的正整数,其约数的个数记为div(x),例如div(10)=4。设a和b是两个正整数,找出a和b之间约数个数最多的数x的约数个数。样例输入: 136样例输出: 9解法1:暴力循环,依次记录区间范围之内每个数的约数个数进行比较。#include#includ原创 2016-09-08 21:41:34 · 5676 阅读 · 0 评论 -
整除2011
多少个1组成的整数可以被2011整除? 解:要想求多少个1组成的数字可以被2011整除,很明显那个数回超出整数范围,所以要模拟除法的过程。 除法分为整除和取摸运算两部分,从被除数的第一位开始对除数进行整除运算商结果作为商的第一位,取摸运算结果乘以10再加上被除数的下一位数字作为新的被除数, 对除数进行重复运算。 此题只要求得到位数,不要求原创 2016-09-08 13:20:20 · 626 阅读 · 0 评论 -
金币阵列问题
金币阵列问题有m*n枚金币在桌面上排成一个金币阵列。每一个金币正面朝上,或背面朝上,分别用0和1表示。金币阵列游戏的规则是:(1)每次可将任一行金币翻过来放在原来的位置上;(2)每次可任选2列,交换这2列金币的位置。给定金币的初始状态和目标状态,计算按金币游戏规则,将金币阵列从初始状态变换到目标状态所需的最少变换次数。输入:4 3原创 2016-09-18 10:46:17 · 1842 阅读 · 1 评论 -
字典序问题
在数据加密和数据压缩中常需要对特殊的字符串进行编码。给定的字母表A由26个小写字母组成。该字母表产生的升序字符串中字母从左到右出现的次序与字母在字母表中出现的次序相同,且每个字符最多出现1次。例如,a,b,ab,bc,xyz等字符串都是升序字符串。现在对字母表中产生的所有长度不超过6的升序字符串,计算它在字典中的编码。123…ab原创 2016-09-10 10:34:31 · 16983 阅读 · 4 评论 -
分数拆分问题
输入正整数 k,找到所有的正整数x≥y,使得样例输入: 2 12样例输出: 1/2=1/3+1/6 1/2=1/4+1/4 2 1/12=1/156+1/13 1/12=1/84+1/14 1/12=1/60+1/15 1/12=1/48+1/16 1/12=1/36+1/18 1/12=1/30+1/20原创 2016-09-10 23:25:12 · 1749 阅读 · 0 评论 -
6174问题
假设有一个各位互不相同的四位数,把所有的数字从大到小排序后得到 a,从小到大排序后得到b,然后用a-b替换原来这个数,并且继续操作。例如,从1234出发,依次可以得到4321-1234=3087,8730-378=8352,8532-2358=6174,7614-1467=6174。输入一个n位数,输出操作序列,直至出现循环。输入保证在循环之前最多只会产生1000个整数。样原创 2016-09-10 22:29:51 · 900 阅读 · 0 评论 -
除法问题
输入正整数 n,按从小到大的顺序输出所有形如abcde/fghij=n的表达式,其中a~j为数字0~9的一个排列,2≤n≤79样例输入: 62样例输出: 79546/01283=62 94736/01528=62解:看到题目之后会想到,10层暴力,但是很不容易控制,每一位不同,因此将其看成两个五位数进行做除法计算,因为每一位不同,所以最小为12345最大为原创 2016-09-10 19:06:43 · 1427 阅读 · 0 评论 -
颠倒的价格牌
小李的店里专卖其它店中下架的样品电视机,可称为:样品电视专卖店。其标价都是4位数字(即千元不等)。小李为了标价清晰、方便,使用了预制的类似数码管的标价签,只要用颜色笔涂数字就可以了。 这种价牌有个特点,对一些数字,倒过来看也是合理的数字。如:1 2 5 6 8 9 0 都可以。这样一来,如果牌子挂倒了,有可能完全变成了另一个价格,比如:1958 倒着挂就是:8561,差了几千元原创 2016-09-10 10:07:22 · 1204 阅读 · 0 评论 -
最大间隙问题
最大间隙问题。给定n个实数,求这n个实数在数轴上相邻2个数之间的最大差值,设计解最大间隙问题的线性时间算法。样例输入: 5 2.33.1 7.5 1.5 6.3样例输出: 3.2 解法1:对于已给数据进行排序,然后遍历一遍找出最大的间隙。但是题目要求设计线性时间算法,但是已知的排序 中最小为n*log(n原创 2016-09-08 21:59:01 · 1945 阅读 · 0 评论 -
最大子段和问题
最大子段和问题描述:给定由n个整数(包含负整数)组成的序列a1,a2,...,an,求该序列子段和的最大值。当所有整数均为负值时定义其最大子段和为0。依此定义,所求的最优值为: 例如,当(a1,a2 , a3 , a4 , a5 ,a6)=(-2,11,-4,13,-5,-2)时,最大子段和为:11+(-4)+13 =20解:最大原创 2017-01-02 12:00:28 · 1117 阅读 · 0 评论 -
数字三角形问题
数字三角形问题 给定一个由n行数字组成的数字三角形,设计一个算法,计算出从三角形的顶至底的一条路径,使该路径经过的数字总和最大。测试用例:5(行数)73 88 1 02 7 444 5 26 5输出:30解:数字三角形问题:如果得到一条由顶至底的某处的一条最佳路径,那么对于该路径上的原创 2017-01-02 14:02:40 · 742 阅读 · 0 评论 -
最长公共子序列
最长公共子序列 一个给定序列的子序列是在该序列中删除若干元素后得到的序列,确切的说,若给定序列X = {x1,x2,...xm},则另一个序列,Y= {y1,y2...,yn},当另一个序列即是X的子序列又是Y的子序列时,称Z是序列X也Y的公共子序列。最长公共子序列问题为给定序列X和Y,找到所有公共子序列中最长的一个(非连续)。测试用例:4 5qwe原创 2017-01-02 15:15:04 · 536 阅读 · 0 评论