新手必看,简单解题思路
2023-12-31 15:13:14
发布于:广东
26阅读
0回复
0点赞
解题思路
本体的答案主要分为确定正确和可能正确两种
最大值=确定正确+可能正确
最小值=确定正确
使用到的变量
int n,mi,zhiyi;//n,确定,可能
char a[1005][1005],b[1005][1005];//答题卡,答案状态
输入(这里不用讲吧)
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>a[i][j];
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>b[i][j];
}
}
要注意,小星答题卡的实际顺序中,a[i][j]=a[j][i]
同时,有三种情况会出现正确情况
确定正确:该位置为+(正确)且对应位置答案相同
可能正确:该位置为-且对应位置答案不同,或该位置为?
if(b[i][j]=='+'){
if(a[i][j]==a[j][i])mi++;
}
else if(b[i][j]=='-'){
if(a[i][j]!=a[j][i])zhiyi++;
}
else zhiyi++;
最后ac代码
#include<iostream>
using namespace std;
int n,mi,zhiyi;
char b[1005][1005],a[1005][1005];
int main(){
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>a[i][j];
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>b[i][j];
if(b[i][j]=='+'){
if(a[i][j]==a[j][i])mi++;
}
else if(b[i][j]=='-'){
if(a[i][j]!=a[j][i])zhiyi++;
}
else zhiyi++;
}
}
cout<<mi+zhiyi<<" "<<mi;
}
感谢阅读
这里空空如也
有帮助,赞一个