赞
踩
题目分析:输入一个n×n的矩阵,每个元素是0或者1,那么根据题意就有三种情况
1.每行每列都是正确的
2.有两行或者两列错误,这种就是改变一个元素也不能正确的
3.就是只有一行且一列不正确
- //思路:构造数组 遍历数组 根据是否成立构造出行数组和列数组
- //遍历行列数组 判断符合什么情况
- int main(){
-
- int n;
- cin>>n;
- int a[110][110];
- int i,j;
- //输入元素
- for(i = 0;i<n;i++){
- for(j = 0;j<n;j++){
- cin>>a[i][j];
- }
- }
-
- //遍历
- int h[110],l[110],sumh=0,suml=0;
- for(i = 0;i<n;i++){
- sumh=0,suml=0;
- for(j = 0;j<n;j++){
- if(a[i][j]==1){
- sumh++;
- }
- if(a[j][i]==1){
- suml++;
- }
- }
- //判断该行,列的1的数量
- if(sumh%2==0){
- h[i] = 1;
- }else{
- h[i] = 0;
- }
- if(suml%2==0){
- l[i] = 1;
- }else{
- l[i] = 0;
- }
- }
-
- sumh=0,suml=0;
- int I,J;//记录几行几列
- //遍历h,l数组
- for(i = 0;i<n;i++){
- if(h[i]==0){
- sumh++;
- I=i+1;
- }
- if(l[i]==0){
- suml++;
- J=i+1;
- }
- }
-
- if(sumh==0&&suml==0){
- cout<<"OK";
- }else if(sumh==1&&suml==1){
- cout<<I<<" "<<J;
- }else{
- cout<<"Corrupt";
- }
-
-
-
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。