单个判断是正确的,但多个组合在一起就会多一个或少一个,求助大佬帮忙处理下细节
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int n,sum;
int k[10][6];
int m[6];
bool pd(int i);
int main()
{
ios::sync_with_stdio(0);
cin>>n;
for(int i=1;i<=n;++i)
{
for(int j=1;j<=5;++j)
{
cin>>k[i][j];
}
}
// while(1)
// {
// for(int i=1;i<=5;++i)
// cin>>m[i];
// if(pd()) cout<<"1"<<endl;
// else cout<<"0"<<endl;
//
// }
for(int a=0;a<=9;++a)
{
m[1]=a;
for(int b=0;b<=9;++b)
{
m[2]=b;
for(int c=0;c<=9;++c)
{
m[3]=c;
for(int d=0;d<=9;++d)
{
m[4]=d;
for(int e=0;e<=9;++e)
{
m[5]=e;
bool f=1;
for(int i=1;i<=n;++i)
if(!pd(i)) f=0;
if(f) sum++;
}
}
}
}
}
cout<<sum;
return 0;
}
bool pd(int i)
{
int total=0,p=0,q=0;
for(int j=1;j<=5;++j)
{
if(k[i][j]!=m[j])
{
total++;
if(total==1) p=j;
else
if(total==2) q=j;
else
if(total>=3) return 0;
}
}
if(total==0) return 0;
if(total==2 && abs(p-q) >=2) return 0;
if(total==2)
{
if(k[i][p]>m[p]) m[p]+=10;
if(k[i][q]>m[q]) m[q]+=10;
if(k[i][p]-m[p]!=k[i][q]-m[q]) return 0;
}
return 1;
}