題意:
兩個人各有n和m個骰子,求第一個人點數和比第二個人大的概率,
先用搜索求出所有點數出現的次數,然後枚舉第二個人出現點數的情況,求對應的第一個人比他大的概率,最後把所有情況加起來。。。
#include"stdio.h"
#include"string.h"
#include"math.h"
int a[10][6*10];
int t;
void bfs(int x,int k)
{
if(x==0)
{
a[t][k]++;
return ;
}
for(int i=1;i<=6;i++)
bfs(x-1,k+i);
}
int main()
{
int n,m;
int i,j;
double ans;
memset(a,0,sizeof(a));
for(t=1;t<=8;t++)
bfs(t,0);
while(scanf("%d%d",&n,&m)!=-1)
{
ans=0.0;
if(n>1)
{
for(i=m;i<=m*6;i++)
{
int tt=0;
for(j=i+1;j<=n*6;j++)
tt+=a[n][j];
ans+=tt*1.0*a[m][i]/pow(6.0,m);//本來寫成tt*a[m][i]*1.0/pow(6.0,m),WA了,爲什麼呢??
}
}
printf("%.16f\n",ans/pow(6.0,n));
}
return 0;
}