zoukankan      html  css  js  c++  java
  • 北航 2012年考研复试题2

    /*理解题目本身意思,可以发现对于矩阵中的0是否属于内陆,取决于该0所处的行和列上,如果0满足,
    如下条件则O为内陆,否则不是。
    0所在的行,0的左边和右边必须有1
    0所在的列,0的上面和下面必须有1
    所以,解题思路就是,遍历所有的行和列,记录改行或列,最左面和最右面(或者最上面和最下面)1的坐标,
    然后当遇到0,判断是否处于记录的值的中间,是,则是内陆,面积加1,否则不加。*/

    #include <stdio.h>
    int L[110][110];
    int R[110][110];
    int U[110][110];
    int D[110][110];
    int mat[110][110];
    
    int main() {
        int n, i, j, ans = 0;
        int flag = 0;
    //    freopen("A.txt", "r", stdin);
        scanf("%d", &n);
        for(i = 0; i < n; i++) {
            for(j = 0; j < n; j++) {
                scanf("%d", &mat[i][j]);
            }
        }
        //L
        for(i = 0; i < n; i++) {
            flag = 0;
            for(j = 0; j < n; j++) {
                if(mat[i][j] == 1) flag = 1;
                if(flag) L[i][j] = 1;
                else L[i][j] = 0;
            }
        }
        //R
        for(i = 0; i < n; i++) {
            flag = 0;
            for(j = n-1; j >= 0; j--) {
                if(mat[i][j] == 1) flag = 1;
                if(flag) R[i][j] = 1;
                else R[i][j] = 0;
            }
        }
        //U
        for(j = 0; j < n; j++) {
            flag = 0;
            for(i = 0; i < n; i++) {
                if(mat[i][j] == 1) flag = 1;
                if(flag) U[i][j] = 1;
                else U[i][j] = 0;
            }
        }
        //D
        for(j = 0; j < n; j++) {
            flag = 0;
            for(i = n-1; i >= 0; i--) {
                if(mat[i][j] == 1) flag = 1;
                if(flag) D[i][j] = 1;
                else D[i][j] = 0;
            }
        }
        for(i = 0; i < n; i++) {
            for(j = 0; j < n; j++) {
             printf("%d ",L[i][j]); 
            
            }
        }
        for(i = 0; i < n; i++) {
            for(j = 0; j < n; j++) {
                if(L[i][j] && R[i][j] && U[i][j] && D[i][j] && mat[i][j] == 0) ans++;
            }
        }
        printf("%d
    ", ans);
        return 0;
    }
  • 相关阅读:
    131. Palindrome Partitioning
    130. Surrounded Regions
    129. Sum Root to Leaf Numbers
    128. Longest Consecutive Sequence
    125. Valid Palindrome
    124. Binary Tree Maximum Path Sum
    122. Best Time to Buy and Sell Stock II
    121. Best Time to Buy and Sell Stock
    120. Triangle
    119. Pascal's Triangle II
  • 原文地址:https://www.cnblogs.com/Xilian/p/3826426.html
Copyright © 2011-2022 走看看