Bootstrap

Daimayuan Online Judge 矩阵交换

有一个由 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");
    }
}

;