试设计一个解最大团问题的迭代回溯算法.
第1题
问题描述:在一个操场的四周摆放着n堆石子.现要将石子有次序地合并成一堆.规定
每次至少选2堆,最多选k堆石子合并成新的一堆,合并的费用为新的一堆的石子数.试设计一个算法,计算出将n堆石子合并成一堆的最大总费用和最小总费用.
算法设计:对于给定的n堆石子,计算合并成一堆的最大总费用和最小总费用.
数据输入:由文件input.txt提供输入数据.文件的第1行有2个正整数n和k,表示有n堆石子,每次至少选2堆最多选k堆石子合并.第2行有n个数,分别表示每堆石子的个数.
结果输出:将计算的最大总费用和最小总费用输出到文件output.txt.
第2题
问题描述:给定k个排好序的序列用2路合并算法将这k个序列合并成一个序列.假设采用的2路合并算法合并2个长度分别为m和n的序列需要m+n-1次比较.
试设计一个算法确定合并这个序列的最优合并顺序,使所需的总比较次数最少.
为了进行比较,还需要确定合并这个序列的最运合并顺序,使所需的总比较次数最多.
算法设计:对于给定的k个待合并序列,计算最多比较次数和最少比较次数合并方案.
数据输入:由文件input.txt给出输入数据.第1行有1个正整数k,表示有k个待合并序列.接下来的1行有k个正整数,表示k个待合并序列的长度.
结果输出:将计算的最多比较次数和最少比较次数输出到文件output.txt.
第3题
问题描述:设是要进行排列的n个元素.其中元素可能相同.试设计一个算法,列出R的所有不同排列.
算法设计:给定n及待排列的n个元素.计算出这n个元素的所有不同排列.
数据输入:由文件input.txt提供输入数据.文件的第1行是元素个数n,1≤n≤500.接下来的1行是待排列的n个元素.
结果输出:将计算出的n1个元素的所有不同排列输出到文件output.txt.文件最后1行中
的数是排列总数.
第4题
算法设计:对于给定的n和k个加油站位置,计算最少加油次数.
数据输入:由文件input.tst给出输入数据.第1行有2个正整数n和k,表示汽车加满油后可行驶nkm,且旅途中有k个加油站.接下来的1行中有k+1个整数,表示第k个加油站与第k-1个加油站之间的距离.第0个加油站表示出发地,汽车已加满油.第k+1个加油站表示目的地.
结果输出:将计算的最少加油次数输出到文件output.txt.如果无法到达目的地,则输出“NoSolution",
第5题
问题描述:关于整数的二元圈乘运算定义为
(XY)=十进制整数X的各位数字之和x十进制整数Y的最大数字+Y的最小数字
例如,(930)=9*3+0=27.
对于给定的十进制整数X和K,由X和运算可以组成各种不同的表达式.试设计一个算法,计算出由X和运算组成的值为K的表达式最少需用多少个运算.
算法设计:给定十进制整数X和K(1≤X,K≤1020),计算由X和 运算组成的值为K的表达式最少需用多少个运算.
数据输入:输入数据由文件名为input.txt的文本文件提供.每行有2个十进制整数X和K.最后一行是00.
结果输出:将找到的最少运算个数输出到文件output.txt.
第6题
Ackermann函数A(m,n)可递归定义如下:
试设计一个计算A(m,n)的动态规划算法,该算法只占用O(m)空间(提示:用两个数组val[0:m]和ind[0:m],使得对任何i有val[i]=A(i,ind[i])).
第7题
问题描述:定义于字母表上的乘法表如表3-1所示.对任一定义于Σ上的字符串,适当加括号后,得到,个表达式.例如,对于字符串x=bbba,它的一个加括号表达式为(b(bb)(ba).依乘法表,该表达式的值为a试设计一个动态规划算法,对任一定义于Σ上的字符串 计算有多少种不同的加括号方式,使由x导出的加括号表达式的值为a.
算法设计:对于给定的字符串,计算有多少种不同的加括号方式,使由x导出的加括号表达式的值为a.
数据输入:由文件input.txt提供输入数据.文件的第1行中给出一个字符串.
结果输出;将计算结果输出到文件output.txt文件的第1行中的数是计算出的加括号方式数.
第8题
第9题
第10题
规则I:每次只能移动1个圆盘:
规则II:任何时刻都不允许将较大的圆盘压在较小的圆盘之上;
规则III:任何时刻都不允许将同色圆盘叠放在一起:
规则IV:在满足移动规则I~III的前提下,可将圆盘移至A、B、C中任一塔座上.
试设计一个算法,用最少的移动次数将塔座A上的n个圆盘移到塔座B上,并仍按同样顺序叠置.
算法设计:对于给定的正整数n,计算最优移动方案.
数据输入:由文件input.txt给出输入数据.第1行是给定的正整数no.
结果输出:将计算出的最优移动方案输出到文件output.txt.文件的每行由一个正整数k
和2个字符c1和c2组成,表示将第k个圆盘从塔座c1移到塔座c2上.
第11题
问题描述:机器人Rob在一个有n×n个方格的方形区域F中收集样本.(i,j)方格中样本的价值为v(i,j),如图3-6所示.Rob从方形区域F的左上角A点出发,向下或向右行走,
直到右下角的B点,在走过的路上,收集方格中的样本.Rob从A点到B点共走2次,试找出Rob的2条行走路径,使其取得的样本总价值最大.
算法设计:给定方形区域F中的样本分布,计算Rob的2条行走路径,使其取得的样本总价值最大.
数据输入:由文件input.xt给出输入数据.第1行有1个正整数n,表示方形区域F有n×n个方格.按下来每行有3个整数,前2个数表示方格位置,第3个数为该位置样本价值.最后一行是3个0.
结果输出:将计算的最大样本总价值输出到文件output.txt.