两段简单pascal程序求算法分析【急!!】

两段简单pascal程序求算法分析【急!!】,第1张

两个都是经典题。

第一题:最大连续子段和,DP。f(i)表示1~i的以i结尾的最大连续子段和是多少(也就是你程序中的t)。那么当f(i)<0的话,显然下一个数就不要与f(i)连起来了,为什么呢?比如说,现在数列的1 -3 1。那么f(2)=-2。这时候算f(3)的话,显然f(3)=1比f(3)=-2+1=-1优。最后答案就是所有f(i)的最大值。

第二题:还是DP。先把兵不能走的地方标记出来(也就是马能到的地方)(也就是程序中的b数组)。然后f(i,j)表示兵走到(i,j)这个格子的方案数(也就是程序中的a数组)。那么f(i,j)=f(i-1,j)+f(i,j-1)。因为只有(i-1,j)和(i,j-1)可以走到(i,j)这个格子。最后就输出f(n,m)就可以了。

1先把4位数的千,百,十,个位标为A,B,C,D,用函数取出A,B,C,D为4个字符,再把A,B,C,D转为数字,比较A=DB=C符合列出,不符合开始验证下一个。

22个加数各2位,算上“+”号共5位字符,先用函数取出前两个字符转为数字,再取出后两个字符转为数字,两个数字相加,把得到的数字转为字符列出。

program gen;

var c:char;s:string;n,p:integer;

people:array[150000]of string;

father:array[150000]of longint;

ff:array['A''Z',150000]of longint;

nn:array['A''Z']of longint;

function search(s:string):longint;

var i:longint;

begin

search:=0;

for i:=1 to nn[s[1]] do

if people[ff[s[1],i]]=s then begin search:=ff[s[1],i];break;end;

end;

procedure insert_father(s:string);

var k:longint;

begin

k:=search(s);

if k=0 then begin

inc(n);

people[n]:=s;

inc(nn[s[1]]);

ff[s[1],nn[s[1]]]:=n;

father[n]:=0;

p:=n;

end

else p:=k;

end;

procedure insert_son(s:string);

var k:longint;

begin

k:=search(s);

if k=0 then begin

inc(n);

people[n]:=s;

inc(nn[s[1]]);

ff[s[1],nn[s[1]]]:=n;

father[n]:=p;

end

else father[k]:=p;

end;

function find(s:string):string;

var k:longint;

begin

k:=search(s);

while father[k]<>0 do k:=father[k];

find:=people[k];

end;

begin

assign(input,'genin');reset(input);

assign(output,'genout');rewrite(output);

read(c);

while c<>''do

begin

readln(s);

case c of

'#':insert_father(s);

'+':insert_son(s);

end;

read(c);

end;

while c<>'$' do

begin

readln(s);

writeln(s,' ',find(s));

read(c);

end;

close(input);close(output);

end

随便给一个了,希望喜欢

以上就是关于两段简单pascal程序求算法分析【急!!】全部的内容,包括:两段简单pascal程序求算法分析【急!!】、2个初级新手简单的pascal语言程序 请进、pascal求几道题的程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9790394.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存