プロジェクトオイラー問151

http://odz.sakura.ne.jp/projecteuler/index.php?cmd=read&page=Problem%20151
Problem 151 「規格寸法用紙 : 期待値問題」 †
何も考えない確率p付き全探索で解決します。
期待値の定義を理解してないと少し難しいかもしれません。


#include<stdio.h>

double ans=0;
void f(double p,int a2,int a3,int a4,int a5){
	double s=a2+a3+a4+a5;
 	if(s==1){
		if(a5==1)return;
		ans+=p;
	}
 	if(a2>0)f(p*a2/s,a2-1,a3+1,a4+1,a5+1);
	if(a3>0)f(p*a3/s,a2,a3-1,a4+1,a5+1);
	if(a4>0)f(p*a4/s,a2,a3,a4-1,a5+1);
	if(a5>0)f(p*a5/s,a2,a3,a4,a5-1);
}

int main(){
	f(1.0,1,1,1,1);
	printf("%lf\n",ans);
}
最終更新:2016年01月18日 08:24