关于80分
查看原帖
关于80分
780416
baojiaming01楼主2023/11/3 10:53
#include <bits/stdc++.h>
using namespace std;
int v[6],a[9][6],ans,n;
int dis(int x,int y)
{
    return (x<=y)?(y-x):(10-x+y);
}
int check()
{
	for(int i=1; i<=n; i++)
	{
		int cnt=0;
        for(int j=1; j<=5; j++)
        {
            if(v[j]!=a[i][j])
            {
                cnt++;
                if(cnt==2 && (v[j-1]==a[1][j-1] || dis(v[j-1],a[i][j-1])!=dis(v[j],a[i][j]))) return false;
                else if(cnt>2) return false;
            }
        }
        if(cnt==0) return false;
	}
    return true;
}
void dfs(int x)
{
	if(x>5)
	{
		ans+=check();
		return;
	}
	for(int i=0; i<=9; i++)
	{
		v[x]=i;
		dfs(x+1);
	}
	return; 
}
int main()
{
    cin>>n;
    for(int i=1; i<=n; i++) cin>>a[i][1]>>a[i][2]>>a[i][3]>>a[i][4]>>a[i][5];
    dfs(1);
    cout<<ans<<endl;
	return 0;
}
2023/11/3 10:53
加载中...