207 条题解
-
0DOG123 LV 7 @ 2008-11-12 19:49:48
公式:
(2*n)!/(n!n!)/(n+1);
自己优化一下。
(难道就没有人用C++吗?)
#include
using namespace std;
long long sum;
int main ()
{int i,n;
sum=1;
cin>>n;
for(i=n+1;i -
02008-11-10 20:59:48@
var
n,sum:longint;
procedure p(i,j:longint);
var
m:longint;
begin
if j-1=n then
begin inc(sum);exit; end;
m:=j;
p(i+1,j+1);
if i-1>=0 then p(i-1,j);
end;
begin
readln(n);
p(1,2);
writeln(sum);
end.
一次AC 前所未有啊!!!! 感动!!! -
02008-11-10 19:54:15@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0msprogram hly;
var
n,ans:longint;
procedure search(a,b,k:longint);
begin
if k=n then begin inc(ans); exit; end;
if a>0 then search(a-1,b+1,k);
if b>0 then search(a,b-1,k+1);
end;
procedure init;
begin
readln(n);
ans:=0;
end;
begin
init;
search(n,0,0);
writeln(ans);
end. -
02008-11-07 18:04:16@
begin
writeln(1);
end. -
02008-11-04 19:31:53@
sum=C(2*n,n)/(n+1);
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms -
02008-11-04 07:19:03@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
#include
using namespace std;
int main()
{
int n;
cin>>n;
int i,j,k,a,b;
a=2*n;b=n;
float c=1;
for(i=0;i -
02008-11-03 21:10:30@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms#include
#include
using namespace std;
long k,total=0;
void ini(){
cin>>k;
return;
}
void work(long n,long m){
if(m>k-n) return;
if(n==k) {total++;return;}
work(n,m+1);
if(m>0) work(n+1,m-1);
return;
}
int main(){
ini();
work(0,0);
cout -
02008-11-01 15:35:30@
-
02009-07-06 20:40:18@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms
我在不知道栈这种类型的情况下用排列组合的方法AC了
不知是小菜还是被Orz -
02008-10-31 20:17:42@
标准格式下不会有人比我短了。。。
var
u:extended;
i,n:longint;
begin
read(n);u:=1;
for i:=n+1 to 2*n do u:=u*i/(i-n);
writeln(u/(n+1):0:0);
end. -
02008-10-28 20:17:38@
卡特兰数..
Cata(n)= 1/(n+1)*C(2n,n)
主要程序
for i := n+2 to n*2 do a := a * i;
for i := 2 to n do a := a div i; -
02008-10-28 20:06:05@
晕死 DFS暴搜...居然也过...
#include
void dfs(int a,int b,int c);
int n,ans;
int main()
{
scanf("%d",&n);
dfs(n,0,0);
printf("%d",ans);
return 0;
}
void dfs(int a,int b,int c)
{
if(c == n)
ans++;
else
{
if(a > 0)
dfs(a-1,b+1,c);
if(b > 0)
dfs(a,b-1,c+1);
}
} -
02008-10-27 20:45:54@
就是传说中的CATALAN数。一次秒杀…………还用的LONGINT;
P/P=(4*I-2)/(I+1) -
02008-10-27 19:17:34@
编译通过...
├ 测试数据 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;
a:array[-1..20,-1..20] of longint;
function f(x,y:longint):longint;
begin
if a[x,y]0 then exit(a[x,y]);
if y=0 then f:=1 else
if (x>n) or (x -
02008-10-27 17:52:58@
编译通过...
├ 测试数据 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,i:longint;
a:extended;
begin
readln(n);
a:=1;
for i:=1 to n do
a:=a*(2*n+1-i)/i;
a:=a/(n+1);
writeln(a:0:0);
end.catalan顺秒,没看题,直接交的“二叉树数”的没加高精度的代码
-
02008-10-21 01:19:55@
一看就知道是组合
为了复习搜索,还是写了dfs
在我格式严谨得连“writeln(ans)”都要专门写一个"procedure outs;"的情况下,30行内完成……一次AC就是爽阿
-
02008-10-15 22:16:57@
var x,y:extended; i,n:longint;
Begin
readln(n);
x:=1; y:=1;
for i:=1 to n do x:=x*i;
for i:=n+1 to 2*n do y:=y*i;
writeln(y/x/(n+1):0:0);
end.
卡特兰数 真牛逼~! -
02008-10-15 22:01:12@
水水水水水水水水水水…………………………水水水水水水题啊啊啊啊啊啊!!!!
catalan数列
c(2n,n)/(n+1)
其中c(2n,n)是组合数
注意如果死算,当n==15时程序输出是错误的,要cheat一下!!!!!!!!! -
02008-10-13 14:51:32@
伟大的卡特兰数···
-
02008-10-12 22:52:55@
卡特兰数
用extended 直接搞定