zoj 3468

點擊打開鏈接


題意:

兩個人各有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;
}


發佈了565 篇原創文章 · 獲贊 51 · 訪問量 42萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章