作业帮 > 综合 > 作业

C语言找不到方法去解决

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/11/05 18:32:23
C语言找不到方法去解决
布尔矩阵有一种奇偶性,即该矩阵所有行和所有列的和都是一个偶数.如下面这个4*4的矩阵就具有奇偶性:1 0 1 0 0 0 0 0 1 1 1 1 0 1 0 1 编写程序,读入一个n阶方阵并检查它是否是布尔矩阵.如果没有,你的程序应当再检查一下它是否可以通过修改一位(把0改为1,把1改为0)来使它为布尔矩阵,如果不可能,这个矩阵就被认为是破坏了.
输入
第一行是一个整数n ( 0< n < 100 ),代表该矩阵的阶数.然后输入n 行,每行n个整数(0或1).
输出
如果矩阵是布尔矩阵,输出“OK”;如果能通过只修改该矩阵中的一位来使它成为布尔矩阵,则输出“Change bit(i,j)”,这里i和j是被修改的元素的行与列(行,列号从0开始),否则,输出“Corrupt”.
样例输入
4
1 0 1 0
0 0 0 0
1 1 1 1
0 1 0 1
样例输出
OK
下面是我不完整的思路
#include
int main()
{
\x05int a[10][10],r[10],c[10],wz[10]={0};
\x05int i,j,n;
\x05int sum=0,count=0;
\x05while(scanf("%d",&n)!=EOF){
\x05for(i=0;i
给你个思路吧
检查奇偶性很简单吧 计算每行每列的和判断就行
比较复杂的是修改一位就可以变成布尔矩阵
由于布尔矩阵只有0/1两种元素 所以改变一个元素 会同时改变它所在行和列的和
这样如果可以通过改变一位变成布尔矩阵,那就要求有且只有一行和一列和是奇数 其他的都是偶数
需要改变的就是奇数这一行和列交汇点
所以可以在第一步校验时保存下奇数行的个数,以及第一个奇数行的行号,奇数列的个数,以及奇数列的列号
然后判断 如果奇数行个数和偶数行个数都是1 那么输出对应行列号
否则就是Corrupt