free pascal 数列(series) 有一个数列A1,A2,…,An(1≤n≤30),其中A1=0,永远不变,从第二个数A2开始,它可以是前面的数加1,也可以是前面的数减1.例如n=4,可能的数列有:0 1 2 3 S=6(即4个数的和)0 1 2 1 S

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/26 09:43:18
free pascal 数列(series) 有一个数列A1,A2,…,An(1≤n≤30),其中A1=0,永远不变,从第二个数A2开始,它可以是前面的数加1,也可以是前面的数减1.例如n=4,可能的数列有:0 1 2 3 S=6(即4个数的和)0 1 2 1 S
xSQOP+wo[@I >*\fxK:3ʘ.i&eqJq -_i Xf7i{swYRC_wu)TwJ+͢b ")!'$1_4?DhfWl鞜-7EB" #zK/k W8?h};5$^>w%@|lA >Ծyt3pT?8 !GآwʶKeMD^=Xxr9?nj{~l_z{58!ŷw|ȪTz׍6/es9U`?Q##Hɬ`&oU٩`:V=q{VnE B:֗#9=UE\䈬i$  >,2=򚚦%eU{+ : 6"c NNR ޳$5C\TɢC3)g# !)'z4w*(H*b(cFN*q7$ݭ&gP~ѩmġhT~A IP%Ӯ8a`0Mײ{@X 2w/8\

free pascal 数列(series) 有一个数列A1,A2,…,An(1≤n≤30),其中A1=0,永远不变,从第二个数A2开始,它可以是前面的数加1,也可以是前面的数减1.例如n=4,可能的数列有:0 1 2 3 S=6(即4个数的和)0 1 2 1 S
free pascal 数列(series)
有一个数列A1,A2,…,An(1≤n≤30),其中A1=0,永远不变,从第二个数A2开始,它可以是前面的数加1,也可以是前面的数减1.例如n=4,可能的数列有:
0 1 2 3 S=6(即4个数的和)
0 1 2 1 S=4
0 1 0 1 S=2
0 1 0 -1 S=0
0 -1 0 1 S=0
0 -1 0 -1 S=-2
0 -1 -2 -1 S=-4
0 -1 -2 -3 S=-6
给出n和S,问满足条件的数列有多少.
【输入描述】 2个整数
【输出描述】 一个整数(满足条件的数列的个数)
【输入样例】 4 0
【输出样例】 2

free pascal 数列(series) 有一个数列A1,A2,…,An(1≤n≤30),其中A1=0,永远不变,从第二个数A2开始,它可以是前面的数加1,也可以是前面的数减1.例如n=4,可能的数列有:0 1 2 3 S=6(即4个数的和)0 1 2 1 S
暴力的程序,优化的还没有想出来!

const max=30;

var n,s,sum:longint;
a:array[1..max] of longint;

procedure work(x:longint);
var i,t:longint;
begin
a[x]:=a[x-1]+1;
if xn then work(x+1)
else
begin
t:=0;
for i:=1 to n do t:=t+a[i];
if t=s then inc(sum);
end;
a[x]:=a[x-1]-1;
if xn then work(x+1)
else
begin
t:=0;
for i:=1 to n do t:=t+a[i];
if t=s then inc(sum);
end;
end;

begin
readln(n,s);
sum:=0;
a[1]:=0;
if n>=2 then work(2)
else if s=0 then inc(sum);
writeln(sum);
end.