求石子归并(直线型)样例分析?输入 7 13 7 8 16 21 4 18 输出 239(pascal)
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/17 01:18:31
求石子归并(直线型)样例分析?输入 7 13 7 8 16 21 4 18 输出 239(pascal)
描述 Description
在一个操场上一排地摆放着N堆石子.现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分.
设计一个程序,计算出将N堆石子合并成一堆的最小得分.
【输入输出格式 Input/Output Format】
输入格式 Input Format
第一行为一个正整数N (2≤N≤100);
以下N行,每行一个正整数,小于10000,分别表示第i堆石子的个数(1≤i≤N).
输出格式 Output Format
为一个正整数,即最小得分.
【输入输出样例 Input/Output Sample】
样例输入 Sample Input
7
13
7
8
16
21
4
18
样例输出 Sample Output
239
描述 Description
在一个操场上一排地摆放着N堆石子.现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分.
设计一个程序,计算出将N堆石子合并成一堆的最小得分.
【输入输出格式 Input/Output Format】
输入格式 Input Format
第一行为一个正整数N (2≤N≤100);
以下N行,每行一个正整数,小于10000,分别表示第i堆石子的个数(1≤i≤N).
输出格式 Output Format
为一个正整数,即最小得分.
【输入输出样例 Input/Output Sample】
样例输入 Sample Input
7
13
7
8
16
21
4
18
样例输出 Sample Output
239
dp
var
a:array[0..1000] of longint;
data:array[-1..300,-1..300] of longint;
f:array[0..300,0..300] of longint;
ff:array[0..300,0..300] of longint;
maxans,minans,i,j,k,p,n:longint;
function max(a,b:longint):longint;
begin
if a>b then exit(a);
exit(b);
end;
function min(a,b:longint):longint;
begin
if an then
p:=i+k-n;
f[i,j]:=max(f[i,j],f[i,k]+f[p,j-k]+data[i,k]+data[p,j-k]);
if ff[i,j]=0 then
ff[i,j]:=ff[i,k]+ff[p,j-k]+data[i,k]+data[p,j-k]
else
ff[i,j]:=min(ff[i,j],ff[i,k]+ff[p,j-k]+data[i,k]+data[p,j-k]);
end;
maxans:=0;
minans:=maxlongint;
for i:=1 to n do
begin
maxans:=max(maxans,f[i,n]);
minans:=min(minans,ff[i,n]);
end;
writeln(minans);
writeln(maxans);
end.
再问: 我需要的是样例分析!
再答: 即 合并一堆之后需要一个分数 也会得到一个数值 这个数值在插到里面去继续合并 最终合并成一堆
var
a:array[0..1000] of longint;
data:array[-1..300,-1..300] of longint;
f:array[0..300,0..300] of longint;
ff:array[0..300,0..300] of longint;
maxans,minans,i,j,k,p,n:longint;
function max(a,b:longint):longint;
begin
if a>b then exit(a);
exit(b);
end;
function min(a,b:longint):longint;
begin
if an then
p:=i+k-n;
f[i,j]:=max(f[i,j],f[i,k]+f[p,j-k]+data[i,k]+data[p,j-k]);
if ff[i,j]=0 then
ff[i,j]:=ff[i,k]+ff[p,j-k]+data[i,k]+data[p,j-k]
else
ff[i,j]:=min(ff[i,j],ff[i,k]+ff[p,j-k]+data[i,k]+data[p,j-k]);
end;
maxans:=0;
minans:=maxlongint;
for i:=1 to n do
begin
maxans:=max(maxans,f[i,n]);
minans:=min(minans,ff[i,n]);
end;
writeln(minans);
writeln(maxans);
end.
再问: 我需要的是样例分析!
再答: 即 合并一堆之后需要一个分数 也会得到一个数值 这个数值在插到里面去继续合并 最终合并成一堆
pascal石子归并 石子归并一:给出n堆石子的重量W1,W2.WN,要求你合并其中的任意两堆或者n堆(n>=2),求出
pascal输出数字 1 7 2 12 8 3 16 13 9 4 19 17 14 10 5 21 20 18 15
pascal输入一个整数,如果它是7的倍数,则输出‘yes’,否则输出‘no’.
pascal问题求输出
c++ 输入n 输出n*n的数字矩阵 如 输入4输出 10 11 12 1 9 16 13 2 8 15 14 3 7
pascal编程输出图形 7 6 5 8 1 4 9 2 3 10 11
BF3分子的空间构型为() A直线型B平面三角C正四面体D三角锥形 要详细分析,
输入一个正整数A,如果A的各个数字之和为7的倍数则输出‘YES’,否则输出‘NO’ Turbo pascal
pascal中输入n个一位数再输入s,用n个数组成n位数(数不可重复),从大到小排列后,输出第s个数
直线型组织结构?
pascal程序 输入单词按字母表顺序排序输出
Pascal求任意一个三位数数个位数字之和 输入:123; 输出:1+2+3=123