正经题解|拉丁方格
2024-08-05 11:06:59
发布于:浙江
22阅读
0回复
0点赞
题面大意
给出一个的矩阵,矩阵当中每一行每个字符都不同,每一列每个字符都不同,现在替换其中一个字符为?
,求解?
该放什么字符
思路解析
题目已经告诉矩阵只有ABC
三种字符组成,那么根据每一行每列的每个字符都不同来看,也就是说在一整个矩阵当中,每个字符出现的次数最多只有3次,直接遍历一整个数字找出出现次数小于3次的即可。
时间复杂度
暴力枚举也可以,根据题目给出的规则,每一行每列没有重复的字符,并且字符当中只有ABC
,遍历所在的行或者列,看这一行或者列当中缺少ABC
哪个字符直接输出即可。
时间复杂度
方法还有很多,在n=3的情况下只要能模拟出对应的解法都可以过。
时间复杂度
代码示范
#include<bits/stdc++.h>
using namespace std;
char mp[4][4];
int main(){
int a,b,c;
a=b=c=0;
for(int i = 0 ; i < 3 ; i ++ ){
for(int j = 0 ; j < 3 ; j ++ ){
cin >> mp[i][j];
if(mp[i][j] == 'A')a++;
else if(mp[i][j] == 'B')b++;
else if(mp[i][j] == 'C')c++ ;
}
}
if(a < 3) cout << "A" << endl;
else if(b < 3) cout << "B" << endl;
else if(c < 3)cout << "C" << endl;
return 0;
}
全部评论 2
#include<bits/stdc++.h> using namespace std; int main(){ char a,b,c,d,e,f,g,h,i; cin>>a>>b>>c>>d>>e>>f>>g>>h>>i; cout<<char(3*'A'+3*'B'+3*'C'+'?'-a-b-c-d-e-f-g-h-i); return 0; }
2024-10-13 来自 广东
0#include<iostream> using namespace std; int main(){ char a='A'; char b='B'; char c='C'; int ASCLL=(int)a*3+(int)b*3+(int)c*3; char arr[3][3]; for(int i=0;i<3;i++){ for(int j=0;j<3;j++){ cin>>arr[i][j]; } }for(int i=0;i<3;i++){ for(int j=0;j<3;j++){ if(arr[i][j]!='?'){ ASCLL-=(int)arr[i][j]; } } }cout<<(char)ASCLL; }
这种方法也行
2024-08-07 来自 上海
0
有帮助,赞一个