poj 3071 Football 概率DP
2013-08-02 20:08
507 查看
概率DP,递推式:dp[i][j]=sigma(dp[i-1][j]*p[j][k]*dp[i-1][k])
再就是判断j和k是否相邻:if(((k>>(i-1))^1)==(j>>(i-1)))
代码如下:
View Code
再就是判断j和k是否相邻:if(((k>>(i-1))^1)==(j>>(i-1)))
代码如下:
#include<iostream> #include<stdio.h> #include<algorithm> #include<iomanip> #include<cmath> #include<cstring> using namespace std; double dp[129][129],p[129][129]; int main() { int i,j,k,ans,n; while(cin>>n){ if(n==-1) break; for(i=0;i<(1<<n);i++) for(j=0;j<(1<<n);j++){ cin>>p[i][j]; } memset(dp,0,sizeof(dp)); for(i=0;i<(1<<n);i++) dp[0][i]=1; for(i=1;i<=n;i++) for(j=0;j<(1<<n);j++) for(k=0;k<(1<<n);k++){ if(((k>>(i-1))^1)==(j>>(i-1))) dp[i][j]+=dp[i-1][j]*dp[i-1][k]*p[j][k]; } ans=0; for(i=0;i<(1<<n);i++) if(dp [i]>dp [ans]) ans=i; cout<<ans+1<<endl; } }
View Code
相关文章推荐
- POJ 3071 Football (概率DP)
- POJ 3071 Football (概率dp)
- POJ 3071 Football 概率DP 二进制优化
- poj-3071 Football 【概率dp,位运算】
- POJ 3071 Football 概率DP
- POJ 3071 Football (概率DP)
- poj 3071 Football (概率DP水题)
- POJ 3071 Football 【概率DP】
- Poj 3071 Football (比赛对阵 概率DP)
- poj 3071 Football(概率dp)
- [ACM] POJ 3071 Football (概率DP)
- POJ 3071 - Football(概率DP 求概率)
- POJ 3071 Football (概率DP)
- poj 3071 Football(概率dp)
- POJ 3071 Football—概率DP-conquer sea博客
- poj 3071 Football(概率dp)
- POJ 3071 Football (概率DP)
- poj 3071 Football 概率dp
- [概率dp] poj 3071 Football
- POJ 3071 Football (概率DP)