码迷,mamicode.com
首页 > 其他好文 > 详细

LightOJ1122 Digit Count(DP)

时间:2016-01-16 01:16:44      阅读:383      评论:0      收藏:0      [点我收藏+]

标签:

dp[i][j]表示长度i末尾为S[j]的方案数

dp[1][0...m-1]=1

dp[i][j]=∑dp[i-1][k] (|S[k]-S[j]|<=2)

 1 #include<cstdio>
 2 #include<cstdlib>
 3 #include<cstring>
 4 using namespace std;
 5 int d[11][11];
 6 int main(){
 7     int t,n,m,a[11];
 8     scanf("%d",&t);
 9     for(int cse=1; cse<=t; ++cse){
10         scanf("%d%d",&n,&m);
11         for(int i=0; i<n; ++i) scanf("%d",a+i);
12         memset(d,0,sizeof(d));
13         for(int i=0; i<n; ++i) d[1][i]=1;
14         for(int i=2; i<=m; ++i){
15             for(int j=0; j<n; ++j){
16                 for(int k=0; k<n; ++k){
17                     if(abs(a[j]-a[k])<=2) d[i][j]+=d[i-1][k];
18                 }
19             }
20         }
21         int res=0;
22         for(int i=0; i<n; ++i) res+=d[m][i];
23         printf("Case %d: %d\n",cse,res);
24     }
25     return 0;
26 }

 

LightOJ1122 Digit Count(DP)

标签:

原文地址:http://www.cnblogs.com/WABoss/p/5134758.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!