有一个由 00 和 11 组成的 n� 行 n� 列的数字方阵,其中只有一个 11,其余都是 00。现在我们想通过一些操作把 11 换到数字方阵的左上角。每次操作我们可以交换方阵中的任意两行或者任意两列,请问为了完成目标,我们最少需要交换多少次?
输入格式
第一行,一个整数 n�。
接下来 n� 行,每行 n� 个数,表示数字方阵。
输出格式
一行一个整数,表示答案。
样例输入
4
0 0 0 1
0 0 0 0
0 0 0 0
0 0 0 0
样例输出
1
样例解释
我们交换第 11 列和第 44 列就可以啦!
数据限制
对于 100%100% 的数据,保证 1≤n≤1001≤�≤100 并且数字方阵中只有一个 11。
#include<bits/stdc++.h>
using namespace std;
int n,a[1001][1001],b,c;
int main(){
scanf("%d",&n);
for(int i = 1;i <= n;i++){
for (int j = 1; j <= n;j++){
cin >> a[i][j];
if(a[i][j] == 1){
b = i;
c = j;
}
}
}
if(b == 1 || c == 1){
if(c == 1 && b == 1){
printf("0");
}else
printf("1");
}else{
printf("2");
}
}