解题思路:
注意事项:
参考代码:
#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语言代码)浏览:845 |
1128题解(返回值为数组的情况)浏览:571 |
小O的乘积 (C++代码)浏览:796 |
C语言程序设计教程(第三版)课后习题11.8 (C语言代码)浏览:1060 |
C语言训练-斐波纳契数列 (C语言代码)浏览:644 |
明明的随机数 (C语言代码)浏览:621 |
Manchester- A+B for Input-Output Practice (V)浏览:1219 |
世界杯来了浏览:1006 |
C语言程序设计教程(第三版)课后习题6.2 (C语言代码)浏览:670 |
WU-简单的a+b (C语言代码)浏览:879 |