设为首页 加入收藏

TOP

hdu 4865 Peter's Hobby (隐马尔可夫模型 dp)(二)
2015-07-20 18:04:07 来源: 作者: 【 】 浏览:8
Tags:hdu 4865 Peter' Hobby 马尔 可夫 模型
e #include #include #include #include #include #define maxn 105 #define MAXN 100005 #define mod 1000000009 #define INF 0x3f3f3f3f #define pi acos(-1.0) #define eps 1e-10 typedef long long ll; using namespace std; int n,m,flag,cnt,tot,test=0; int num[55],pre[55][4]; double dp[55][4]; char s[50]; double lea[3][4]= { {0.6, 0.2, 0.15, 0.05}, {0.25, 0.3, 0.2, 0.25}, {0.05, 0.10, 0.35, 0.50} }; double wea[3][3]= { {0.5, 0.375, 0.125}, {0.25, 0.125, 0.625}, {0.25, 0.375, 0.375} }; char res[3][15]= { "Sunny","Cloudy","Rainy" }; void output(int x,int y) { if(x==0) return ; output(x-1,pre[x][y]); printf("%s\n",res[y]); } void solve() { int i,j,k,t,id; double ma,tmp; dp[1][0]=log(0.63)+lea[0][num[1]]; dp[1][1]=log(0.17)+lea[1][num[1]]; dp[1][2]=log(0.2)+lea[2][num[1]]; for(i=2;i<=n;i++) { for(j=0;j<3;j++) { ma=-INF; for(k=0;k<3;k++) { tmp=dp[i-1][k]+wea[k][j]+lea[j][num[i]]; if(ma ma) { ma=dp[n][j]; id=j; } } printf("Case #%d:\n",++test); output(n,id); } int main() { int i,j,t; for(i=0;i<3;i++) { for(j=0;j<4;j++) { lea[i][j]=log(lea[i][j]); if(j<3) wea[i][j]=log(wea[i][j]); } } scanf("%d",&t); while(t--) { scanf("%d",&n); for(i=1;i<=n;i++) { scanf("%s",s); if(strcmp(s,"Dry")==0) num[i]=0; else if(strcmp(s,"Dryish")==0) num[i]=1; else if(strcmp(s,"Damp")==0) num[i]=2; else num[i]=3; } solve(); } return 0; }





首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇HDU4734――F(x)(数位DP) 下一篇poj 2054 Color a Tree(贪心)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: