解题思路:

注意事项:

参考代码:

#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.0分

4 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论