您的位置:首页 > 其它

poj 3071 Football(概率动态规划)

2014-07-15 22:14 330 查看
//poj 3071 Football(概率动态规划)
/*============================

^ | 0  1  2  3  4  5  6  7
----------------------------
0 | 0  1  2  3  4  5  6  7
1 | 1  0  3  2  5  4  7  6
2 | 2  3  0  1  6  7  4  5
3 | 3  2  1  0  7  6  5  4
4 | 4  5  6  7  0  1  2  3
5 | 5  4  7  6  1  0  3  2
6 | 6  7  4  5  2  3  0  1
7 | 7  6  5  4  3  2  1  0
对于^运算可以很好的运用到全概率公式
=============================*/
#include<stdio.h>
#include<iostream>
#include<string.h>
using namespace std;
const int N=130;
double p

;
double dp
[8];
int main()
{
int n,i,j;
while(scanf("%d",&n)==1)
{
if(n==-1) break;
int m=(1<<n);
for(i=0;i<m;i++)
{
for(j=0;j<m;j++)
{
scanf("%lf",&p[i][j]);
}
dp[i][0]=1;
}
int ans=0;
for(i=0;i<n;i++)
{
ans=0;
for(j=0;j<m;j++)
{
double sum=0;
//==========全概率算法===============
for(int k=(1<<i);k<(1<<(i+1));k++)
{
sum+=dp[k^j][i]*p[j][k^j];
}
dp[j][i+1]=dp[j][i]*sum;
//==========================
if(dp[j][i+1]>dp[ans][i+1])
{
ans=j;
}
}
}
printf("%d\n",ans+1);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: