设为首页
加入收藏
首页
C语言
C++
面试
Linux
函数
Windows
数据库
下载
搜索
我要投稿
全站搜索
文章
图片
软件
视频
商品
FLASH
产品
高级搜索
当前位置:
首页
->
基础
->
c++编程基础
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(贪心)
评论
帐 号:
密码:
(
新用户注册
)
验 证 码:
表 情:
内 容:
Copyright@https://www.cppentry.com all rights reserved
粤ICP备13067022号-3
Powered by
qibosoft V7.0
Code © 2003-11
qibosoft