50分求助
查看原帖
50分求助
677489
Aaron530楼主2024/10/24 16:40
#include <bits/stdc++.h>
using namespace std;
int n;
long long ans;
int s[10][10],s1[10];
int dis(int x,int y)
{
	if(x<=y)
		return 10+y-x;
	else
		return 20+x-y;
}
bool check()
{
	for(int i=1;i<=n;i++)
	{
		vector <int> dif;
		for(int j=1;j<=5;j++)
			if(s1[j]!=s[i][j])
				dif.push_back(j);
		if(dif.size()>2 || dif.size()<1)
			return false;
		else if(dif.size()==2)
		{
			if(abs(dif[0]-dif[1])!=1)
				return false;
			else
				if(dis(s1[dif[0]],s[i][dif[0]])!=
				   dis(s1[dif[1]],s[i][dif[1]]))
				    return false;
		}
	}
	return true;
}
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=5;j++)
			cin>>s[i][j];
	for(int a=0;a<=9;a++)
		for(int b=0;b<=9;b++)
			for(int c=0;c<=9;c++)
				for(int d=0;d<=9;d++)
					for(int e=0;e<=9;e++)
					{
						s1[1]=a,s1[2]=b,s1[3]=c,s1[4]=d,s1[5]=e;
						if(check()==true)
							ans++;
					}
	cout<<ans;
	return 0;
}

2024/10/24 16:40
加载中...