给定一个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
代码如下:
#include<stdio.h>
int main()
{
int a[100][200], i, j, k, n, m, z, h[100] = { 0 }, l[200] = { 0 }, flag = 0;
scanf("%d %d", &m, &n);
for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++)
{
scanf("%d", &a[i][j]);
}
}
for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++)
{
if (a[i][j] % 2 == 0 || a[i][j] == 0)
h[i]++;
}
}
for (i = 0; i < n; i++)
{
for (j = 0; j < m; j++)
{
if (a[j][i] % 2 != 0 && a[j][i] != 0)
l[i]++;
}
}
for (i = 0; i < m; i++)
{
if (h[i] % 2 == 0)
flag++;
}
for (i = 0; i < n; i++)
{
if (l[i] % 2 != 0)
flag++;
}
if (flag == (m + n))
printf("yes\n");
else
printf("no\n");
return 0;
}