社区讨论
有没有哪个神犇教一下我怎么改?
P9752[CSP-S 2023] 密码锁参与者 3已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @lo1jzp2f
- 此快照首次捕获于
- 2023/10/22 22:17 2 年前
- 此快照最后确认于
- 2023/11/02 11:46 2 年前
不知为什么,数据一输出81我输出26
CPP#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();
}
尽可能地将注释标了上去,还请各位神犇多多指教
回复
共 2 条回复,欢迎继续交流。
正在加载回复...