A Za, A Za, Fighting...

坚信:勤能补拙

PKU 1953 World Cup Noise

问题:
http://acm.pku.edu.cn/JudgeOnline/problem?id=1953

思路:
如果想通了,其实就是道挺简单的动规题
zero_end[i]记录第i位以0结尾的合法排列
one_end[i]记录第i位以1结尾的合法排列
状态方程即:
                 zero_end[i+1] = zero_end[i] + one_end[i]
                 one_end[i+1] = zero_end[i]
以深度搜索的递归树即可观察得出以上结论(*^__^*) 嘻嘻……

代码:
 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<string.h>
 4 #define MAX_LEN 45
 5 int zero_end[MAX_LEN+1];
 6 int one_end[MAX_LEN+1];
 7 
 8 int
 9 build_table()
10 {
11     int i;
12     zero_end[1= 1;
13     one_end[1= 1;
14     for(i=2; i<=45; i++) {
15         zero_end[i] = zero_end[i-1+ one_end[i-1];
16         one_end[i] = zero_end[i-1];
17     }
18 }
19 
20 int
21 main(int argc, char **argv)
22 {
23     int i, n, tests;
24     build_table();
25     scanf("%d"&tests);
26     for(i=1; i<=tests; i++) {
27         scanf("%d"&n);
28         printf("Scenario #%d:\n%d\n\n", i, zero_end[n]+one_end[n]);
29     }
30 }

posted on 2010-08-12 12:57 simplyzhao 阅读(148) 评论(0)  编辑 收藏 引用 所属分类: C_动态规划


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


导航

<2024年7月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

统计

常用链接

留言簿(1)

随笔分类

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜