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
阅读(200)
评论(0)
编辑
收藏
引用
所属分类:
DP
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
zoj2563
zoj2498
zoj2283
zoj2144
zoj1554/poj2176
zoj1475
zoj1490
zoj1446
zoj1346
zoj1245
网站导航:
博客园
IT新闻
BlogJava
博问
Chat2DB
管理
<
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(494)
2. zoj1206(467)
3. zoj2563(440)
4. zoj1013(433)
5. zoj1346(336)
评论排行榜
1. zoj1013(0)
2. zoj1206(0)
3. zoj1234(0)
4. zoj1245(0)
5. zoj1346(0)