解题思路:
注意事项:
参考代码:
#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分
4 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复