[NKU]sweet @ICPC,TopCoder,and so on
自从2004的执念
C++博客
|
首页
|
发新随笔
|
发新文章
|
联系
|
聚合
|
管理
Ural 1009
访问量很大的说~THX
刚开始读错题了,不允许有2个连续的0,屡屡WA,后来看discuss,发现了个精妙的解法
1
#include
<
iostream.h
>
;
2
3
int
main()
4
{
5
long
n,k,i;
6
long
f[
30
];
7
cin
>>
n
>>
k;
8
f[
0
]
=
k
-
1
;
9
f[
1
]
=
k
*
f[
0
];
10
for
(i
=
2
;i
<
n;i
++
) f[i]
=
(k
-
1
)
*
(f[i
-
1
]
+
f[i
-
2
]);
11
cout
<<
f[n
-
1
];
12
return
0
;
13
}
其递推关系的精华大概就是:
定义的f[0],f[1]都是没有两个连续的0,
f[i]=(k-1)*(f[i-1]+f[i-2]);
也就是说用1..K这K-1个数,后面接上长度为N-1的那些或者可以接上长度为N-2的那些,差一位,用0补足。
精妙,精妙。
发表于 2008-06-07 10:43
Sweet康
阅读(222)
评论(0)
编辑
收藏
引用
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理
随笔:11 文章:0 评论:0 引用:0
<
2008年6月
>
日
一
二
三
四
五
六
25
26
27
28
29
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
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(1)
给我留言
查看公开留言
查看私人留言
随笔分类
(6)
Ural(6)
(rss)
随笔档案
(11)
2010年2月 (1)
2008年6月 (10)
文章分类
Ural
(rss)
朋友们
搜索
最新评论
阅读排行榜
1. Ural 1087(416)
2. Ural 1001(390)
3. Ural 1012&&1013(339)
4. Ural 1005(327)
5. Ural 1017(314)
评论排行榜
1. Ural 1001(0)
2. Ural 1005(0)
3. Ural 1017(0)
4. Ural 1079(0)
5. Ural 1009(0)