解题思路:
注意事项:
参考代码:
#include<iostream>
using namespace std;
typedef int I;
#define X(A,B) (A[B[0]][B[1]][B[2]][B[3]][B[4]][B[5]])
double cache[7][7][7][7][7][7];
bool vis[7][7][7][7][7][7];
double win(int h[6])
{ if(X(vis,h)) return X(cache,h);
X(vis,h)=true;
X(cache,h)=0.;
I mx=0;
for(I i=0;i<6;i++)mx=max(mx,h[i]);
I i=0,hh[6];
for(I j=0;j<mx;j++)
{ for(I d=0;d<2;d++)
{i=0+5*d;
double loss=0.;
for(I p=1;p<=3;p++)
{ for(I k=0;k<6;k++)hh[k]=h[k];
I pp=p;
I k=i;
while(pp)
{ if(k<0||k>5)break;
if(hh[k]>j)hh[k]--,pp--;
k+=1-2*d;
}
loss+=win(hh);
}
loss=(1-loss/3.);
if(loss>X(cache,h))X(cache,h)=loss;
}
}
return X(cache,h);
}
I main()
{ I n;
while(scanf("%d",&n)==1&&n)
{ I h[6]={0};
for(I i=0;i<n;i++)scanf("%d",&h[i]);
printf("%.6lf\n",win(h));
}
return 0;
}
0.0分
6 人评分
C语言程序设计教程(第三版)课后习题8.6 (C语言代码)浏览:530 |
字符串的输入输出处理 (C语言代码)浏览:924 |
C语言训练-求s=a+aa+aaa+aaaa+aa...a的值 (C语言代码)浏览:612 |
三角形 (C++代码)递归(存在大量重复计算,容易出现时间超限)浏览:774 |
C语言程序设计教程(第三版)课后习题6.1 (C语言代码)浏览:545 |
幸运数 (C++代码)浏览:1258 |
字符串输入输出函数 (C语言代码)浏览:2480 |
1035 题解浏览:778 |
C语言程序设计教程(第三版)课后习题9.4 (C语言代码)浏览:629 |
前10名 (C语言代码)浏览:726 |