首页 > 代码库 > hdu-3853-LOOPS-概率dp
hdu-3853-LOOPS-概率dp
用记忆化写概率DP写的越来越纯真了。。
感觉记忆化很好写。。。
#include <iostream> #include<stdio.h> #include<string.h> #include<math.h> using namespace std; #define maxn 1100 #define eps 1e-6 #define zero(x) (fabs(x)<0?0:x) double mp[maxn][maxn][4]; double dp[maxn][maxn]; int n,m; double dos(int x,int y) { if(x>n||y>m)return -2; if(dp[x][y]>-0.5)return dp[x][y]; double a,b,c; a=mp[x][y][1]; if(zero(a-1)==0)return 0; b=mp[x][y][2]; c=mp[x][y][3]; dp[x][y]=2.0*a; dp[x][y]+=b*(dos(x,y+1)+2); dp[x][y]+=c*(dos(x+1,y)+2); dp[x][y]=dp[x][y]/(1-a); return dp[x][y]; } int main() { while(~scanf("%d%d",&n,&m)) { memset(dp,-1,sizeof(dp)); for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { for(int k=1;k<=3;k++) { scanf("%lf",&mp[i][j][k]); } } } dp[n][m]=0; printf("%.3f\n",dos(1,1)); } return 0; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。