207 条题解
- 
  0472792567 LV 7 @ 2009-07-28 21:24:30 program dsa; 
 var a,b,c,a1,b1,c1,n,i:integer;
 begin
 a1:=1; b1:=1; c1:=1;
 readln(n);
 a:=2*n;
 b:=n;
 for i:=1 to a do
 a1:=a1*i;
 for i:=1 to b do
 b1:=b1*i;
 c:=a-b;
 for i:=1 to c do
 c1:=c1*i;
 writeln(a1 div (b1*c1) div (n+1));
 end.
- 
  0@ 2009-07-27 17:10:04var h:array[1..16]of real; 
 i,n:longint;begin 
 readln(n);
 h[1]:=1;
 for i:=2 to n do
 h[i]:=(4*i-2)/(i+1)*h;
 writeln(h[n]:0:0);
 end.CATALAN数.. 
- 
  0@ 2009-07-25 22:00:50t:=1; 
 readln(n);
 For i:=2*n downto n+1 do
 begin
 t:=t*i;
 t:=t div (2*n+1-i);
 end;
 writeln(t div (n+1));
- 
  0@ 2009-07-25 13:54:49交表流的程序从来不长 
 考试的时候要想出卡特兰数列太不现实了const 
 cln:array[1..15]of longint =
 (1,2,5,14,42,132,429,1430,4862,16796,58786,208012,742900,2674440,9694845);
 var
 n:longint;
 begin
 readln(n);
 writeln(cln[n]);
 end.
- 
  0@ 2009-07-25 11:37:38编译通过... 
 ├ 测试数据 01:答案正确... 0ms
 ├ 测试数据 02:答案正确... 0ms
 ├ 测试数据 03:答案正确... 0ms
 ├ 测试数据 04:答案正确... 0ms
 ├ 测试数据 05:答案正确... 0ms
 ├ 测试数据 06:答案正确... 0ms
 ├ 测试数据 07:答案正确... 0ms
 ├ 测试数据 08:答案正确... 0ms
 ├ 测试数据 09:答案正确... 0ms
 ├ 测试数据 10:答案正确... 0ms
 ---|---|---|---|---|---|---|---|-
 Accepted 有效得分:100 有效耗时:0ms
 估计是最短的程序了:
 var
 a:array[0..20,0..20]of longint;
 i,j,n:longint;
 begin
 readln(n);
 a[0,0]:=1;
 for i:=1 to n do
 for j:=0 to i do
 a:=a+a;
 writeln(a[n,n]);
 end.
- 
  0@ 2009-07-25 09:54:21楼下的 
 告诉你
 他是对的
 他肯定是个强人
 这么短都可以
 我好崇拜哦
- 
  0@ 2009-07-23 09:46:01楼下的,你这么确定?有这么短? 
- 
  0@ 2009-07-23 08:40:39PROGRAM LT; 
 var
 sum,n:longint;
 procedure pt(x,y:longint);
 begin
 if (x=0)and(y=0)then inc(sum)
 else begin
 if x0 then pt(x-1,y);
 if y0 then pt(x+1,y-1);
 end;
 end;
 begin
 sum:=0;
 readln(n);
 pt(0,n);
 writeln(sum);
 end.
 注意,楼下是错的!!!!!
 编译通过...
 ├ 测试数据 01:答案正确... 0ms
 ├ 测试数据 02:答案正确... 0ms
 ├ 测试数据 03:答案正确... 0ms
 ├ 测试数据 04:答案正确... 0ms
 ├ 测试数据 05:答案正确... 0ms
 ├ 测试数据 06:答案正确... 0ms
 ├ 测试数据 07:答案正确... 0ms
 ├ 测试数据 08:答案正确... 0ms
 ├ 测试数据 09:答案正确... 0ms
 ├ 测试数据 10:答案正确... 0ms
 ---|---|---|---|---|---|---|---|-
 Accepted 有效得分:100 有效耗时:0ms
- 
  0@ 2009-07-22 14:43:10var 
 n,tootle:longint;
 procedure dfs(a,b:longint);
 begin
 if (a=0)and(b=0) then inc(tootle)
 else
 begin
 if a0 then dfs(a-1,b-1);
 if b0 then dfs(a+1,b-1);
 end;
 end;
 begin
 read(n);tootle:=0;
 dfs(0,n);
 write(tootle);
 end.
 原汁原味的DFS....
- 
  0@ 2009-07-22 09:50:06program p1122; 
 type
 xx=array[0..20000]of longint;
 var
 a:xx;
 n:longint;
 function cheng(a:xx;m:longint):xx;
 var
 c:xx;
 i:longint;
 begin
 fillchar(c,sizeof(c),0);
 c[0]:=a[0]+4;
 for i:=1 to a[0] do
 begin
 c[i]:=a[i]*m+c[i];
 c:=c[i] div 10 +c;
 c[i]:=c[i] mod 10;
 end;
 while (c[0]>1)and(c[c[0]]=0) do dec(c[0]);
 cheng:=c;
 end;
 function chu(a:xx;m:longint):xx;
 var
 i,p:longint;
 c:xx;
 begin
 fillchar(c,sizeof(c),0);
 c[0]:=a[0];
 p:=0;
 for i:=a[0] downto 1 do
 begin
 p:=p*10+a[i];
 c[i]:=p div m;
 p:=p mod m;
 end;
 while (c[0]>1)and(c[c[0]]=0) do dec(c[0]);
 chu:=c;
 end;
 procedure work;
 var
 i:longint;
 begin
 readln(n);
 a[1]:=1;
 a[0]:=1;
 for i:=2 to n do
 begin
 a:=cheng(a,2*(2*i-1));
 a:=chu(a,(i+1));
 end;
 for i:=a[0] downto 1 do write(a[i]);
 writeln;
 end;
 begin
 work;
 end.CATALAN数列 
 5000 都可以过,与p1388差不多
- 
  0@ 2009-07-21 16:33:21/* 
 ID: talenth1
 PROG:
 LANG: C++
 */
 #include
 #include
 #include
 #include
 const int maxn=20;
 int n;
 __int64 f[maxn][maxn];
 int main()
 {
 freopen("stack.in","r",stdin);
 freopen("stack.out","w",stdout);
 scanf("%d",&n);
 memset(f,0,sizeof(f));
 for(int i=0;i
- 
  0@ 2009-07-20 16:03:42编译通过... 
 ├ 测试数据 01:运行超时|无输出...
 ├ 测试数据 02:答案正确... 0ms
 ├ 测试数据 03:答案正确... 0ms
 ├ 测试数据 04:答案正确... 0ms
 ├ 测试数据 05:答案正确... 0ms
 ├ 测试数据 06:答案正确... 0ms
 ├ 测试数据 07:答案正确... 0ms
 ├ 测试数据 08:答案正确... 0ms
 ├ 测试数据 09:答案正确... 0ms
 ├ 测试数据 10:答案正确... 0ms
 ---|---|---|---|---|---|---|---|-
 Unaccepted 有效得分:90 有效耗时:0ms编译通过... 
 ├ 测试数据 01:答案正确... 0ms
 ├ 测试数据 02:答案正确... 0ms
 ├ 测试数据 03:答案正确... 0ms
 ├ 测试数据 04:答案正确... 0ms
 ├ 测试数据 05:答案正确... 0ms
 ├ 测试数据 06:答案正确... 0ms
 ├ 测试数据 07:答案正确... 0ms
 ├ 测试数据 08:答案正确... 0ms
 ├ 测试数据 09:答案正确... 0ms
 ├ 测试数据 10:答案正确... 0ms
 ---|---|---|---|---|---|---|---|-
 Accepted 有效得分:100 有效耗时:0ms草,老子的程序。。 
 var n:longint;
 begin
 readln(n);
 if n=0 then write('我操你妈');
 if n=1 then write(1);
 if n=2 then write(2);
 if n=3 then write(5);
 if n=4 then write(14);
 if n=5 then write(42);
 if n=6 then write(132);
 if n=7 then write(429);
 if n=8 then write(1430);
 if n=9 then write(4862);
 if n=10 then write(16796);
 if n=11 then write(58786);
 if n=12 then write(208012);
 if n=13 then write(742900);
 if n=14 then write(2674440);
 if n=15 then write(9694845);
 end.
 就是多了一句‘我草你妈’就过了
 你们说puppy是不是欠草??
- 
  0@ 2009-07-17 17:10:44var 
 f:array[-1..20]of qword;
 i,j,n:longint;
 begin
 readln(n);
 f[0]:=1;
 for i:=1 to n do
 for j:=0 to i-1 do
 f[i]:=f[i]+f[j]*f;
 writeln(f[n]);
 end.
- 
  0@ 2009-07-15 20:50:42编译通过 
 ├ 测试数据 01:答案正确... 0ms
 ├ 测试数据 02:答案正确... 0ms
 ├ 测试数据 03:答案正确... 0ms
 ├ 测试数据 04:答案正确... 0ms
 ├ 测试数据 05:答案正确... 0ms
 ├ 测试数据 06:答案正确... 0ms
 ├ 测试数据 07:答案正确... 0ms
 ├ 测试数据 08:答案正确... 0ms
 ├ 测试数据 09:答案正确... 0ms
 ├ 测试数据 10:答案正确... 0ms
 Accepted 有效得分:100 有效耗时:0ms
 18就够了 牛!program abc(input,output); 
 var i,j,n:integer;
 f:array[0..18,-1..18] of longint;begin readln(n); f[0,-1]:=1; 
 for i:=0 to n do
 for j:=0 to n-i do
 begin
 if i=0 then f:=f
 else if j=0 then f:=f
 else f:=f+f
 end;writeln(f[n,0]); 
 readln;
 end.
- 
  0@ 2009-07-15 19:51:47是CATALAN数列啊。。每次操作可以看成是PUSH和POP的一个长度为2*N的排列。。 
 而且任何时刻PUSH的总和都不能比POP少(否则就。。。)
 并且两者在排列中数量一样。
 所以把PUSH看成+1,POP看成-1。然后就是+1-1各N个的数列。。并且任何时候部分和(第一项到第K项(K为1..2N))不为负。
 这就是CATALAN数列的经典等价问题啊。。CATALAN(N):=C(2N,N)/(N+1)
- 
  0@ 2009-07-15 17:04:54program dsa; 
 var n:integer;
 begin
 read(n);
 if n=1 then write(1);
 if n=2 then write(2);
 if n=3 then write(5);
 if n=4 then write(14);
 if n=5 then write(42);
 if n=6 then write(132);
 if n=7 then write(429);
 if n=8 then write(1430);
 if n=9 then write(4862);
 if n=10 then write(16796);
 if n=11 then write(58786);
 if n=12 then write(208012);
 if n=13 then write(742900);
 if n=14 then write(2674440);
 if n=15 then write(9694845);
 end.catalan数列,没什么好说的 
- 
  0@ 2009-09-03 20:43:17DP DP DP DP DP DP DP 
 呵呵,DP无敌
 ---|---|---|---|---|---|---|--晒程序(1维做的)---|---|---|---|---|---|---|---|---|---|-
 program p1122;
 var
 i,j,n,m:longint;
 f:array[-1..20] of longint;
 begin
 read(n);
 for i:=1 to n do
 f[i]:=1;
 for i:= 1 to n do
 for j:= 0 to n-i do
 f[j]:=f[j-1]+f[j+1];
 writeln(f[0]);
 end.
- 
  0@ 2009-07-15 14:22:18var f:array [0..1000,-5..1000] of longint; 
 i,j,k,l,n,m:longint;
 begin
 readln(n);
 for i:=1 to n do
 f[0,i]:=1;
 for i:=1 to n do
 for j:=0 to n-i do
 f:=f+f;
 writeln(f[n,0]);
 end.
- 
  0@ 2009-07-15 14:14:35program zhan; 
 var
 f:array[-1..20,-1..20] of longint;
 i,j,k,l,m,n:longint;
 begin
 readln(n);
 for i:=1 to n do
 f[0,i]:=1;
 for i:=1 to n do
 for j:=0 to n-i do
 f:=f+f;
 writeln(f[n,0]);
 end.
 动态规划
- 
  0@ 2009-07-15 10:09:12var n:longint; 
 a:array[0..1000,0..1000]of longint;
 function zuo(i,j:longint):longint;
 begin
 if a>0 then exit(a);
 if j=0 then begin a:=zuo(i-1,j+1);exit(a)end;
 if i=0 then begin a:=1;exit(1);end;
 a:=zuo(i-1,j+1)+zuo(i,j-1);exit(a);
 end;
 begin
 read(n);
 writeln(zuo(n,0));
 end.
 这是不是记忆化搜索啊?