rt,样例的答案是0
#include<bits/stdc++.h>
using namespace std;
int top[10];
char ch[10][10];
int cntwin,cntlose;
double sum,f[5][5][5][5][5][5][5][5][5];
double dfs(int sheng,double gl)
{
// cout<<sheng<<" "<<gl<<"\n";
if(f[top[1]][top[2]][top[3]][top[4]][top[5]][top[6]][top[7]][top[8]][top[9]]!=0)
{
sum+=f[top[1]][top[2]][top[3]][top[4]][top[5]][top[6]][top[7]][top[8]][top[9]];
return f[top[1]][top[2]][top[3]][top[4]][top[5]][top[6]][top[7]][top[8]][top[9]];
}
// cout<<sheng<<"\n";
// for(int i=1;i<=9;i++)
// {
// cout<<top[i]<<" ";
// }
// cout<<"\n";
if(sheng==0)
{
sum+=gl;
return gl;
}
int cntt=0;
for(int i=1;i<=8;i++)
{
for(int j=i+1;j<=9;j++)
{
if(ch[i][top[i]]==ch[j][top[j]] && top[i] && top[j])
{
cntt++;
}
}
}
for(int i=1;i<=8;i++)
{
for(int j=i+1;j<=9;j++)
{
if(ch[i][top[i]]==ch[j][top[j]] && top[i] && top[j])
{
top[i]--,top[j]--;
f[top[1]][top[2]][top[3]][top[4]][top[5]][top[6]][top[7]][top[8]][top[9]]+=dfs(sheng-2,gl/cntt);
top[i]++,top[j]++;
}
}
}
return f[top[1]][top[2]][top[3]][top[4]][top[5]][top[6]][top[7]][top[8]][top[9]];
}
int main()
{
// freopen("double.in","r",stdin);
// freopen("double.out","w",stdout);
for(int i=1;i<=9;i++)
{
top[i]=4;
for(int j=1;j<=4;j++)
{
char o,p;
cin>>o>>p;
ch[i][j]=o;
}
}
cout<<dfs(36,1)<<"\n";
// for(int i=1;i<=4;i++) for(int ii=1;ii<=4;ii++) for(int iii=1;iii<=4;iii++) for(int j=1;j<=4;j++) for(int jj=1;jj<=4;jj++) for(int jjj=1;jjj<=4;jjj++) for(int k=1;k<=4;k++) for(int kk=1;kk<=4;kk++) for(int kkk=1;kkk<=4;kkk++) cout<<f[i][ii][iii][j][jj][jjj][k][kk][kkk]<<"\n";
// cout<<cntwin<<" "<<cntlose<<"\n";
// printf("%.6f",sum);
} __