问题描述:在一个有m×n个方格的棋盘中,每个方格中有一个正整数.现要从方格中取数,使任意两个数
算法设计:对于给定的方格棋盘,按照取数要求找出总和最大的数.
数据输入:由文件input.txt提供输入数据.文件第1行有2个正整数m和n,分别表示棋盘的行数和列数.接下来的m行,每行有n个正整数,表示棋盘方格中的数.
结果输出:将取数的最大总和输出到文件output.txt.
算法设计:对于给定的方格棋盘,按照取数要求找出总和最大的数.
数据输入:由文件input.txt提供输入数据.文件第1行有2个正整数m和n,分别表示棋盘的行数和列数.接下来的m行,每行有n个正整数,表示棋盘方格中的数.
结果输出:将取数的最大总和输出到文件output.txt.
第1题
算法设计:对于给定的偶数m,n≥6,且|m-n|≤2,计算m×n的国际象棋棋盘上马的一条Hamilton周游路线.
数据输入:由文件input.txt给出输入数据.第1行有两个正整数m和n,表示给定的国际象棋棋盘山m行,每行n个格子组成.
结果输出:将计算出的马的,Hamilton周游路线用下面的两种表达方式输出到文件output.txt.
第1种表达方式按照马步的次序给出马的Hamilton周游路线.马的每一步用所在的方格坐标(x,y)来表示.x表示行坐标,编号为0,1,...,m-1;y表示列坐标,编号为0,1...,n-1.起始方格为(0,0).
第2种表达方式在棋盘的方格中标明马到达该方格的步数.(0,0)方格为起跳步,并标明为第1步.
第2题
算法设计:对于给定的罗密欧与朱丽叶的迷宫,计算罗密欧通向朱丽叶的所有最少转弯道路.
数据输入:由文件input.txt给出输入数据.第1行有3个正整数n、m、k,分别表示迷宫的行数、列数和封闭的房间数.接下来的k行中,每行2个正整数,表示被封闭的房间所在的行号和列号.最后的2行,每行也有2个正整数,分别表示罗密欧所处的方格(p,q)和朱丽叶所处的方格(r,s).
结果输出:将计算的罗密欧通向朱丽叶的最少转弯次数和有多少条不同的最少转弯道路输出到文件output.txt.文件的第1行是最少转弯次数.第2行是不同的最少转弯道路数.接下来的n行每行m个数,表示迷宫的一条最少转弯道路.A[i][j]=k表示第k步到达方格(i,j):A[i][j]=-1表示方格(i,j)是封闭的.
如果罗密欧无法通向朱丽叶,则输出“NoSolution!".
第3题
试设计一个算法,利用T公司提供的m个补丁程序,将原软件修复成一个没有错误的软件,并使修复后的软件耗时最少.
算法设计:对于给定的n个错误和m个补丁程序,找到总耗时最少的软件修复方案.
数据输入:由文件input.txt提供输入数据.文件第1行有2个正整数n和m,n表示错误总数,m表示补丁总数(1≤n≤20,1≤m≤100).接下来m行给出了m个补丁的信息.每行包括一个正整数,表示运行补丁程序i所需时间以及2个长度为n的字符串,中间用个空格符隔开.在第1个字符串中,如果第k个字符bk为“+”,则表示第k个错误属于B1[i],若为“-”,则表示第k个错误属于B2[i],若为“0”,则第k个错误既不属于B1[i]也不属于B2[i],即软件中是否包含第k个错误并不影响补丁i的可用性.在第2个字符串中,如果第k个字符bk为“+”,则表示第k个错误属于F1[i],若为“-”,则表示第k个错误属于F2[i],若为“0”,则第k个错误既不属于F1[i]也不属于F2[i],即软件中是否包含第k个错误不会因使用补丁i而改变.
结果输出:将总耗时数输出到文件output.txt.如果问题无解,则输出0.
第4题
算法设计:对于给定的长、宽、高分别为m、np的长方体,计算最大子长方体的大小.
数据输入:文件input.txt提供输入数据,第1行是3个正整数m、n、p(1≤m,n,p≤50).在接下来的m×n行中每行p个正整数,表示小立方体中的数.
结果输出:将计算结果输出到文件output.txt文件的第1行中的数是计算出的最大子长方体的大小.
第5题
算法设计:对于给定的m个仓库和n个零售商店间运送货物的费用,计算最优运输方案和最差运输方案.
数据输入:由文件input.txt提供输入数据.文件的第1行有2个正整数m和小,分别表示仓库数和零售商店数.接下来的一行中有m个正整数ai(1≤i≤m),表示第i个仓库有ai个单位的货物.再接下来的一行中有n个正整数bj(1≤j≤n),表示第j个零售商店需要bj个单位的货物.接下来的m行,每行有n个整数,表示从第i个仓库运送每单位货物到第j个零售商店的费用cij.
结果输出:将计算的最少运输费用和最多运输费用输出到文件output.txt.
第6题
规则1:从梯形的顶至底的m条路径互不相交.
规则2:从梯形的顶至底的m条路径仅在数字结点处相交.
规则3:从梯形的顶至底的m条路径允许在数字结点处相交或在边处相交.
算法设计:对于给定的数字梯形,分别按照规则1、规则2和规则3计算出从梯形的顶至底的m条路径,使这m条路径经过的数字总和最大.
数据输入:由文件input,txt提供输入数据.文件的第1行中有2个正整数m和n(m,n≤20),分别表示数字梯形的第1行有m个数字,共有n行.接下来的n行是数字梯形中各行的数字.第1行有m个数字,第2行有m+1个数.....
结果输出:将按照规则1.规则2和规则3计算出的最大数字总和输出到文件output.txt每行一个最大总和.
第7题
(1)n∈set(m);
(2)在n的左边加上一个自然数,但该自然数不能超过最近添加的数的一半:
(3)按此规则进行处理,直到不能再添加自然数为止.
例如,set(6)={6,16,26,126,36,136}.半数集set(6)中有6个元素.注意,该半数集是多重集.
算法设计:对于给定的自然数n,计算半数集set(n)中的元素个数.
数据输入:输入数据由文件名为input.txt的文本文件提供.每个文件只有一行,给出整数n(0<n<1000).
结果输出:将计算结果输出到文件output.txt.输出文件只有一行,给出半数集set(n)中的元素个数.
第8题
算法设计:对于给定的组卷要求,计算满足要求的组卷方案.
数据输入:由文件input.txt提供输入数据.文件第1行有2个正整数k和n(2≤k≤20,k≤n≤1000),k表示题库中试题类型总数,n表示题库中试题总数.第2行有k个正整数,第i个正整数表示要选出的类型i的题数.这k个数相加就是要选出的总题数m.接下来的n行给出了题库中每个试题的类型信息.每行的第1个正整数p表明该题可以属于p类,接着的p个数是该题所属的类型号.
结果输出:将组卷方案输出到文件output.txt.文件第i行输出“i:”后接类型i的题号.如果有多个满足要求的方案,只要输出1个方案.如果问题无解,则输出“NoSolution!".
第9题
金币阵列游戏的规则是:①每次可将任-行金币翻过来放在原来的位置上;②每次可任选2列,交换这2列金币的位置.
算法设计:给定金币阵列的初始状态和目标状态,计算按金币游戏规则,将金币阵列从初始状态变换到H标状态所需的最少变换次数.
数据输入:由文件input.txt给出输入数据.文件中有多组数据.文件的第1行有1个正整数k.表示有k组数据.每组数据的第1行有2个正整数m和n.以下m行是金币阵列的初始状态,每行有n个数字表示该行金币的状态,0表示正面朝上,1表示背面朝上.接着的m行是金币阵列的目标状态.
结果输出:将计算出的最少变换次数按照输入数据的次序输出到文件output.txt.相应数据无解时,输出-1.
第10题
算法设计:对于给定的仓库布局,以及仓库管理员在仓库中的位置和箱子的开始位置和目标位置,设计一个解推箱子问题的分支限界法,计算出仓库管理员将箱子从开始位置推到目标位置所需的最少推动次数.
数据输入:由文件input.txt提供输入数据.输入文件第1行有2个正整数n和m(1≤n,m≤100).表示仓库是n×m个格子的矩形阵列.接下来有n行,每行有m个字符,表示格子的状态.
S——格子上放了不可移动的沉重货物;P——箱子的初始位置;
W——格子空闲:K——箱子的目标位置.
M——仓库管理员的初始位置:
结果输出:将计算的最少推动次数输出到文件output.txt.如果仓库管理员无法将箱子从开始位置推到目标位置则输出“NoSolution!".
为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!