Ayue
阿月
C++博客
|
首页
|
发新随笔
|
发新文章
|
联系
|
聚合
|
管理
随笔:13 文章:0 评论:0 引用:0
zoj1475
题意:问n个人的不同的排名方式有多少种,多个人可能处在同一个名次。
分析: 递推了。公式也很容易写出来。 f[i][j]表示有i个人,j个不同的名次(可能多个人在同一个名次)的方案数.
f[i][j]=f[i-1][j]*j+f[i-1][j-1]*j; 因为i个人排成j个档次可以在i-1个人j个档次的基础上随便找个档次(共有j个档次)加上第i个人,也可以在i-1个人j-1个档次的基础上让第i个人独立作为一个档次随意排,有j个位置。答案就是sigma{f[n][i] | i从1到n}。 这题要用大数。于是我的第一个java程序诞生了,乱搞查资料,debug了半天,终于写出来了,很丑的。自我鄙视一下。
import
java.io.
*
;
import
java.util.
*
;
import
java.math.
*
;
import
java.text.
*
;
public
class
Main
{
static
int
n;
static
BigInteger ans
=
new
BigInteger(
"
0
"
);
static
BigInteger tem
=
new
BigInteger(
"
0
"
);
static
BigInteger tt
=
new
BigInteger(
"
0
"
);
static
BigInteger[][] f
=
new
BigInteger[
210
][
210
];
static
int
zero
=
0
;
public
static
void
main(String[] args)
{
ini();
Scanner cin
=
new
Scanner(
new
BufferedInputStream(System.in));
while
((n
=
cin.nextInt())
>=
0
)
{
ans
=
ans.valueOf(
0
);
for
(
int
i
=
1
;i
<=
n;i
++
) ans
=
ans.add(f[n][i]);
System.out.println(ans);
}
}
public
static
void
ini()
{
for
(
int
i
=
1
;i
<=
200
;i
++
)
{
for
(
int
j
=
1
;j
<=
200
;j
++
) f[i][j]
=
f[i][j].valueOf(
0
);
}
for
(
int
i
=
1
;i
<=
200
;i
++
)
{
f[i][
1
]
=
f[i][
1
].valueOf(
1
);
}
for
(
int
i
=
2
;i
<=
200
;i
++
)
{
for
(
int
j
=
2
;j
<=
i;j
++
)
{
f[i][j]
=
f[i][j].valueOf(
0
);
tem
=
tem.valueOf(j);
tt
=
f[i
-
1
][j].multiply(tem);
f[i][j]
=
f[i][j].add(tt);
tt
=
f[i
-
1
][j
-
1
].multiply(tem);
f[i][j]
=
f[i][j].add(tt);
}
}
}
}
发表于 2011-11-17 23:00
Ayue
阅读(190)
评论(0)
编辑
收藏
引用
所属分类:
DP
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
zoj2563
zoj2498
zoj2283
zoj2144
zoj1554/poj2176
zoj1475
zoj1490
zoj1446
zoj1346
zoj1245
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理
<
2011年11月
>
日
一
二
三
四
五
六
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
给我留言
查看公开留言
查看私人留言
随笔分类
DP(13)
(rss)
随笔档案
2011年12月 (2)
2011年11月 (11)
搜索
最新评论
阅读排行榜
1. zoj2283(484)
2. zoj1206(450)
3. zoj2563(431)
4. zoj1013(421)
5. zoj1554/poj2176(319)
评论排行榜
1. zoj1013(0)
2. zoj1206(0)
3. zoj1234(0)
4. zoj1245(0)
5. zoj1346(0)