题目:
通过读题,我们应了解:
1、要输入一个n*n的矩阵;
2、要把矩阵判断三种情况
要注意:应该如何遍历数组行列??
理清思路后得到伪代码:
#include<bits/stdc++.h>
using namespace std;
这里定义了一堆变量和数组……;
int main()
{
输入n;
输入数组a;
for(遍历行)
{
计数器清0;
for(遍历列)
{
if(某个条件)
{
计数器++;
}
}
if(计数器为偶数)
{
j行++;
行=变量;
}
}
for(遍历列)
{
计数器清0;
for(遍历行)
{
if(某个条件)
{
计数器++;
}
}
if(计数器为偶数)
{
j列++;
列=变量;
}
}
if()
{
打OK;
}
else if()
{
打行列;
}
else
{
打Corrupt;
}
return 0;
}
那么,就可以根据伪代码得到C++代码:
#include<bits/stdc++.h>
using namespace std;
int n,a[105][105]={0},cnt=0,jh=0,h=0,jl=0,l=0;
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++)
{
cnt=0;
for(int j=1;j<=n;j++)
{
if(a[i][j]==1)cnt++;
}
if(cnt%2!=0)
{
jh++;
h=i;
}
}
for(int i=1;i<=n;i++)
{
cnt=0;
for(int j=1;j<=n;j++)
{
if(a[j][i]==1)cnt++;
}
if(cnt%2!=0)
{
jl++;
l=i;
}
}
if(jh == 0 && jl == 0)
{
cout<<"OK\n";
}
else if(jl == 1 && jh == 1)
{
cout<<h<<' '<<l;
}
else
{
cout<<"Corrupt\n";
}
return 0;
}
这道题并不难,但是呢,基本功很重要!
基本功就是如何扫行列!
一般:i行j列
遍历列就交换下标!
2023.12.9