⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 4766211_wa.cpp

📁 部分PKU上的源码
💻 CPP
字号:
#include<iostream>
using namespace std;
float p[1005][35];
float mem[1005][35][35];
bool used[1005][35][35];
int m,t,n;
float get(int n,int s,int now)
{
	float re;
	if(used[now][s][n]) return mem[now][s][n];
	if((m-s+1)==n) 
	{
		int i;
		re=1.0;
		for(i=s;i<=m;i++) re*=p[now][i];
	}
	else
	if(n==0)
	{
		int i;
		re=1.0;
		for(i=s;i<=m;i++) re*=1.0-p[now][i];
	}
	else
	{
		re=p[now][s]*get(n-1,s+1,now)+(1.0-p[now][s])*get(n,s+1,now);
	}
	mem[now][s][n]=re;
	used[now][s][n]=true;
	return re;
}
int main()
{
	while(1)
	{
		cin>>m>>t>>n;
		memset(used,false,sizeof(used));
		if(!m&&!t&&!n) return 0;
		int i,j;
		for(i=1;i<=t;i++)
			for(j=1;j<=m;j++)
				cin>>p[i][j];
		float slove=1.0;
		float all_slove_under_n=1.0;
		for(i=1;i<=t;i++)
		{
			float re=get(0,1,i);
			slove*=(1.0-re);
		}
		for(i=1;i<=t;i++)
		{
			float slove_under_n=0.0;
			for(j=1;j<n;j++)
				slove_under_n+=get(j,1,i);
			all_slove_under_n*=slove_under_n;
		}
		float result;
		result=slove*(1.0-all_slove_under_n);
		printf("%.3lf\n",result);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -