问题描述:设有n个程序{1,2,...,n}要存放在长度为1的磁带上.程序i存放在磁带上的长度是li(1≤i≤n).程序存储问题要求确定这n个程序在磁带上的一个存储方案,使得能够在磁带上存储尽可能多的程序.
算法设计:对于给定的n个程序存放在磁带上的长度,计算磁带上最多可以存储的程序数.
数据输入:由文件input.txt给出输入数据.第1行是2个正整数,分别表示文件个数n和磁带的长度L.接下来的1行中,有1个正整数,表示程序存放在磁带上的长度.
结果输出:将计算的最多可以存储的程序数输出到文件output.txt.
批处理作业调度问题要求对于给定的n个作业,制定最佳作业调度方案,使其完成时间和达到最小.
算法设计:对于给定的n个作业,计算最佳作业调度方案.
数据输入:由文件input.txt提供输入数据.文件第1行有1个正整数n,表示作业数.接下来的n行中,每行有2个正整数i和j,分别表示在机器1和机器2上完成该作业所需的处理时间.
结果输出:将最佳作业调度方案及其完成时间和输出到文件output.txt.文件的第1行是完成时间和,第2行是最佳作业调度方案.
设B={1,2,...,n}是n块电路板的集合.集合L={N1,N2,...,Nm}是n块电路板的m个连接块.其中每个连接块N是B的一个子集,且N中的电路板用同一根导线连接在一起.在最小长度电路板排列问题中,连接块的长度是指该连接块中第1块电路板到最后1块电路板之间的距离.例如,设n=8,m=5,给定n块电路板及其m个连接块如下:
这8块电路板的一个可能的排列如图5-1所示.
在最小长度电路板排列问题中,连接块的长度是指该连接块中第1块电路板到最后1块电路板之间的距离.例如,在图5-1所示的电路板排列中,连接块N4的第1块电路板在插槽3中.它的最后1块电路板在插槽6中,因此N4的长度为3.同理N2的长度为2.图5-1中的连接块最大长度为3.
试设计一个回溯法找出所给n块电路板的最佳排列,使得m个连接块中的最大长度达到最小.
算法设计:对于给定的电路板连接块,设计一个算法,找出所给n个电路板的最佳排列,使得m个连接块中最大长度达到最小.
数据输入:由文件input.txt给出输入数据.第1行有2个正整数n和m(1≤m,n≤20).接下来的n行中,每行有m个数.第k行的第j个数为0表示电路板k不在连接块j中,为1表示电路板k在连接块j中.
结果输出:将计算的电路板排列最小长度及其最佳排列输出到文件output.txt.文件的第一行是最小长度:接下来的1行是最佳排列.
算法设计:对于给定的方格棋盘,按照取数要求找出总和最大的数.
数据输入:由文件input.txt提供输入数据.文件第1行有2个正整数m和n,分别表示棋盘的行数和列数.接下来的m行,每行有n个正整数,表示棋盘方格中的数.
结果输出:将取数的最大总和输出到文件output.txt.
算法设计:对于给定的k个待安排的活动,计算使用最少会场的时间表.
数据输入:由文件input.txt给出输入数据.第1行有1个正整数k,表示有k个待安排的活动.接下来的k行中,每行有2个正整数,分别表示k个待安排的活动的开始时间和结束时间.时间以0点开始的分钟计.
结果输出:将计算的最少会场数输出到文件output.txt.
有向图可以刻画一个系统的状态转换。例如用图8.17的有向图可以描述接收010*10序列(0*表示任意个0,例如0110,01010,01000010等等)的线路的状态转换,其中S0是初始状态,S6是收到010°10序列后的结束状态,S6是收到非010*10序列后的结束状态。
试用类似方法作出接收01(10)*1序列的状态转换图,这里(10)*表示任意个10(可以一个也没有)。
算法设计:给定byteland部落中居民间的仇敌关系,计算组成部落卫队的最佳方案.
数据输入:由文件input.txt给出输入数据.第1行有2个正整数n和m,表示byteland部落中有n个居民,居民间有m个仇敌关系.居民编号为1,2,...,n.接下来的m行中,每行有2个正整数u和v,表示居民u与居民v是仇敌.
结果输出:将计算的部落卫队的最佳组建方案输出到文件output.txt文件的第1行是部落卫队的人数:第2行是卫队组成xi(1≤i≤n).xi=0表示居民i不在卫队中,xi=1表示居民i在卫队中.