04:エラー検出

合計時間の制限は:メモリ制限を1000ミリ秒:65536kBの
記述は、
行列によって与えられるN×N個の各列の数とマトリックス1の各列があっても、それが適格と見なされている場合、0と1です。
あなたの仕事は、マトリックスの適格性を検出することである、または例行列要素の変化だけでは資格があります。
0または1が0になるほど1つの動作が定義されている「マトリックス要素の変更」。

入力
入力行N + 1、最初のn(0 <N <100)の動作マトリックスのサイズ 、 要素間のスペースで区切られたn行の行列の各行の要素。
出力
行列は、条件、出力OKを満たしている場合、
行列は、行列要素のみスペースで区切られた要素を変更する必要条件、出力行と列番号を満たす変更することが可能である場合。
あなたは上記の2、出力破損を満たしていない場合。
サンプル入力
サンプル入力1
。4
。1 1 0 0
0 0 0 0
。1 1 1 1
0 0 1 1

サンプル入力2
。4
。1 1 0 0
0 0 0 1
。1. 1. 1 1
0 0 1 1

サンプル入力3
。4
。1 1 0 0
0 0 1 1
。1 1 1 1
0 0 1 1
からのサンプル出力
サンプル出力1
OK

サンプル出力2
2 3

出力例3
の破損
ソース
6423

#include<iostream>
using namespace std;
int main(){
	int n;
	cin>>n;
	int a[n+5][n+5];
	
	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++){                     //a[0][i]表示第i列元素的和,a[i][0]表示第i行元素的和,初始时设置为0 
		a[0][i]=0;
		a[i][0]=0;
	}
	
	
	for(int col=1;col<=n;col++)                //计算每列元素的和 
	for(int row=1;row<=n;row++)
	a[0][col]+=a[row][col];
	
	
	for(int row=1;row<=n;row++)                //计算每行元素的和
	for(int col=1;col<=n;col++)
	a[row][0]+=a[row][col];
	
	int i,j,cnum,rnum,row,col;                 //判断每列元素的和是否为奇数,cnum,rnum分别表示n列元素中出现奇数的次数 ,n行元素中出现奇数的次数,row,col标记出现奇数的位置 
	for(i=1,cnum=0;i<=n;i++){
		if(a[0][i]%2==1){
			cnum++;                            //计算全部的列中出现奇数的次数 
			col=i;                             //标记该位置,以便后续输出 
		}
	}
	
	for(j=1,rnum=0;j<=n;j++){                  //判断每行元素的和是否为奇数
		if(a[j][0]%2==1){
			rnum++;                            //计算部的行中出现奇数的次数
			row=j;                             //标记该位置,以便后续输出 
		}
		
	}
	
	if(cnum==0&&rnum==0){                      //每行每列的元素之和都为偶数 
		cout<<"OK";
	}else if(cnum==1&&rnum==1){                //刚好只有一行的元素和为奇数,一列的元素和为奇数的时候,才能通过修改某个位置的值来实现全部变成偶数 
		cout<<row<<' '<<col;
	}else{                                     //否则不属于这两种情况,输出错误 
		cout<<"Corrupt";
	}
	
	
	return 0;
}
公開された36元の記事 ウォンの賞賛0 ビュー355

おすすめ

転載: blog.csdn.net/weixin_44437496/article/details/103996673