57 条题解
-
0000wangbo LV 10 @ 2009-07-11 21:46:05
以后再做
-
02009-05-30 16:48:25@
var n,i,j,r:longint;f:array[0..11,0..11]of longint;
begin
readln(n,r);
fillchar(f,sizeof(f),0);
for i:=1 to n do f:=1;
for i:=2 to n do
for j:=2 to r do
begin
f:=f+f*j;
end;
for i:=1 to r do f[n,r]:=f[n,r]*i;
writeln(f[n,r]);
end. -
02009-03-12 23:56:28@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
---|---|---|---|---|---|---|---|-Accepted 有效得分:100 有效耗时:0ms
初始化0
1 2 3 4 5 6 7 8 9 10盒子数
1 1
2 1 1+0*2=1 ……
3 1 1+1*2=3 1+0*3=1
4 1 1+3*2=7 3+3*3=6
5 1 …… 7+6*3=25
6 1 …… ……
7 1 ……
8 1
9 1
即:
初始化
x[20][100]={0};
盒子为1,球数为1的赋值
for(i=1;i -
02008-11-12 00:05:37@
感谢各位大牛的讲解,又学了写新东西!
---|---|---|---|---|---|---|---|---|--
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0msvar n,i,j,r:longint;f:array[0..11,0..11]of longint;
begin
readln(n,r);
fillchar(f,sizeof(f),0);
for i:=1 to n do f:=1;
for i:=2 to n do
for j:=2 to r do
begin
f:=f+f*j;
end;
for i:=1 to r do f[n,r]:=f[n,r]*i;
writeln(f[n,r]);
end. -
02008-10-11 19:28:27@
#include
main()
{int n,m,i,j,f[100][100],q=1;
scanf("%d%d",&n,&m);
f[0][0]=1;
for(i=1;i -
02008-10-06 09:09:38@
F代表前I个盒子放J个球的方案数所以,前I个盒子可以放I to n-(box-i)个球所以,前I-1个盒子可以放I-1 to J-1个球根据加法原理和乘法原理,F:=F+F*当前球的组合数...最后F[BOX,N]就是结果...由于当前阶段只和前一阶段有关,所以可以用滚动数组...
其实我的排列组合以及递推很弱...
-
02008-10-06 08:55:45@
for i:=1 to n do
s:=1;//一个盒子的时候全都是1种
for i:=2 to n do
for j:=2 to r do
s:=s+s*j
for i:=1 to r do
s[n,r]:=s[n,r]*i -
02008-09-29 23:58:16@
s[0][0]=1
s[i][j]=s[j]*j+s[j-1]
ans=s[m][r]*(r!) -
02008-09-24 19:56:50@
可先算 把R个球放入R个盒子的方案 再递推出N个盒子的方案
-
02008-09-19 16:13:46@
首先考虑所有盒子都相同的情况
用f表示前i个球放入前j个盒子里的方法数
讨论此时最后一个球,也就是第i个球
1 这个球单独放入第j个盒子 方法数为 f
2 这个球放入前面已经放过球的盒子 方法数为 f*j(有j种不同的放法)
因此 f = f+f*j
然后再考虑所有盒子不同的情况
对盒子进行排列 r个盒子一共有A(r,r)也就是r!种排列方法 根据乘法原理
每一种排列都对应每一种f[n,r]所以 最后答案为f[n,r]*r!
(最后一个不是感叹号。是阶乘) -
02008-09-15 13:28:37@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms哇哈哈哈哈哈哈哈哈终于对啦.
for i := 2to n do
for j := 2 to r do
s:=s+s*j;
for i := 1to r do
s[n,r]:=s[n,r]*i;
就是这个.啊哈哈哈哈哈哈哈哈哈. -
02008-08-26 19:43:32@
for i:=1 to n do
for j:=1 to m do f:=f+f*j;
for i:=1 to m do f[n,m]:=f[n,m]*i;这才是正确的。~!
-
02008-08-20 22:12:33@
找了一个递推式:
k:=n-r+1;
for i:=1 to k do f[r,n]:=f[r,n]+c(n,i)*f[r-1,n-i];
思路就是对最后一个盒子进行分类讨论 -
02007-11-15 21:16:32@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms
....
似乎hint错了。。。 -
02007-10-06 16:46:22@
排列组合数学问题。。。
-
02007-09-25 11:47:12@
ans=k!*s2(n,k)
s2(n,k)=s2(n-1,k-1)+s2(n-1,k)*k;
s2(n,k)表示把n个球(不同),放到k个盒子(相同)中的方法总数。 -
02007-07-25 20:50:10@
const maxn=10 {球的最大数目}
var s:array[0..maxn, 0..maxn]of longint; {存放第二类数}
(2)用下列二重循环求S(n, r)
① 置S[0, 0]=1;
② for i:=1 to n do
for j:=1 to r do
S(i, j)=i*S(i-1,j)+S(i-1, j-1)
③ 计算方案数S
S:=S[n, r]
For i:=1 to r do S:=S*I;
这个对吗? -
02007-07-24 14:40:18@
真 不知道有 个这样的 公式哦 !!!
害的 我 一看到数据只有10 就马上搜索! -
02007-07-23 15:15:50@
感谢大牛们的精辟结论
-
02007-07-22 14:16:45@
a:=s*(a+a);
注意A数组下限为0