PTA 7-469 错误探测
分数 50
作者 伍建全
单位 重庆科技学院
给定一个m行n列的二维数组。
如果每一行偶数的个数是偶数,并且每一列奇数的个数是奇数,认为是正确的,输出yes;否则输出no
注意:0是偶数。
输入格式:
第1行是两个整数m、n。输入保证1 <= m <= 100, 1 <= n <= 200。
接下来输入有m行,每行n个整数。输入保证在32位整型取值范围之内。
输出格式:
如果输入的每一行偶数的个数是偶数,并且每一列奇数的个数是奇数,输出yes;否则输出no
输入样例1:
3 5
1 7 8 9 6
2 7 5 0 7
4 3 8 2 6
输出样例1:
yes
输入样例2:
3 4
1 8 8 9
2 7 5 0
4 3 6 2
输出样例2:
no
输出样例2提示:
输入的第2列
8
7
3
奇数的个数不是奇数,所以输出 no
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include <stdio.h>
int main(){
int m, n;
scanf("%d %d", &m, &n);
int arr[m][n];
for(int i = 0; i < m; i++){ //遍历数组
for(int j = 0; j < n; j++){
scanf("%d", &arr[i][j]);
}
}
int ou = 0, ji = 0;
int flag = 0;
for(int i = 0; i < m; i++){ //判断所有行
ou = 0; //每行偶数个数清0
for(int k = 0; k < n; k++){
if(arr[i][k] % 2 == 0){
ou++;
}
}
if(ou%2!=0) //如果不满足条件
flag = 1;
}
for(int i = 0; i < n; i++){ //判断所有列
ji = 0; //每行奇数个数清0
for(int h = 0; h < m; h++){
if( arr[h][i] % 2 == 1){
ji++;
}
}
if(ji%2!=1)
flag = 1;
}
if(flag == 0) //满足条件
printf("yes\n");
else
printf("no\n");
return 0;
}
解题思路:
首先遍历数组,然后判断每行的每个数是否偶数并记录个数在判断个数是否为偶数,同理再判断每列的奇数。设置一个变量标记不满足条件的行偶数或列奇数,只要有一个不满足条件就不是正确的
归属知识点:
数组
循环结构