2023CSP-S复赛真题
密码锁
代码:
#include<bits/stdc++.h>using namespace std;int n;
int va[10][10];
int vb[10];
int sum;int check()
{for(int i=1;i<=n;i++){vector<int > v;for(int j=1;j<=5;j++){if(va[i][j]!=vb[j]) v.push_back(j);}if(v.size()==0) return false;if(v.size()>=3) return false;if(v.size()==1) continue;if(v.size()==2){if(v[1]-v[0]>=2) return false;int sum1 = va[i][v[0]]-vb[v[0]];int sum2 = va[i][v[1]]-vb[v[1]];int ned1 = (sum1%10+10)%10;int ned2 = (sum2%10+10)%10;if(ned1!=ned2) return false;}}return true;
}void dfs(int now)
{if(now>5){if(check()) sum++;return ; }for(int i=0;i<=9;i++){vb[now] = i;dfs(now+1);}
}int main()
{//freopen()//freopen()cin>>n;for(int i=1;i<=n;i++){for(int j=1;j<=5;j++){cin>>va[i][j];}}dfs(1);cout<<sum;
}