合計時間の制限は:メモリ制限を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;
}