不知为什么,数据一输出81我输出26
#include<bits/stdc++.h>
using namespace std;
const int MOD=1e9;
//计算两个密码之间的距离
int calculateDistance(const vector<int>&a,const vector<int>&b)
{
int distance=0;
for(int i=0;i<5;i++)
{
int diff=abs(a[i]-b[i]);
distance+=min(diff,10-diff);
}
return distance;
}
//枚举所有可能的密码
vector<vector<int>> generateAllPasswords()
{
vector<vector<int>> passwords;
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++) passwords.push_back({a,b,c,d,e});
return passwords;
}
int main()
{
int n;
cin>>n;
vector<vector<int>> states(n,vector<int>(5));
for(int i=0;i<n;i++) for(int j=0;j<5;j++) cin>>states[i][j];
vector<vector<int>> passwords=generateAllPasswords();
set<int> validPasswords;
for(int i=0;i<n;i++)
{
set<int> possiblePasswords;
for(int j=0;j<passwords.size();j++)
{
int distance=calculateDistance(states[i],passwords[j]);
possiblePasswords.insert(distance);
}
if(!i) validPasswords=possiblePasswords;
else
{
set<int> newValidPasswords;
for(int distance:validPasswords) if(possiblePasswords.count(distance)) newValidPasswords.insert(distance);
validPasswords=newValidPasswords;
}
}
cout<<validPasswords.size();
}
尽可能地将注释标了上去,还请各位神犇多多指教