1.7

題目描述
請編寫一個算法,若N階方陣中某個元素為0,則將其所在的行與列清零。
給定一個N階方陣int[]mat和矩陣的階數n,請返回完成操作后的int[][]方陣(C++中為vector<vector><int>>),保證n小于等于300,矩陣中的元素為int范圍內。</int></vector></int></vector>
測試樣例:
[[1,2,3],[0,1,2],[0,0,1]]
返回:[[0,0,3],[0,0,0],[0,0,0]]

package Chapter1;

import sun.misc.Cleaner;

import java.util.Scanner;

public class Clearer {
//    題目描述
//    請編寫一個算法,若N階方陣中某個元素為0,則將其所在的行與列清零。
//            給定一個N階方陣int[][](C++中為vector<vector><int>>)mat和矩陣的階數n,請返回完成操作后的int[][]方陣(C++中為vector<vector><int>>),保證n小于等于300,矩陣中的元素為int范圍內。</int></vector></int></vector>
//    測試樣例:
//            [[1,2,3],[0,1,2],[0,0,1]]
//    返回:[[0,0,3],[0,0,0],[0,0,0]]
    public int[][] clearZero(int[][] mat, int n) {
    // write code here
        int[][] clear=new int[n][n];
        for(int i=0;i<n;i++){
            for(int j=0;j<n;j++){
                clear[i][j]=0;
            }
        }
        for(int i=0;i<n;i++){
            for(int j=0;j<n;j++){
                if(mat[i][j]==0){
                    clear[i][j]=1;
                }
            }
        }
        for(int i=0;i<n;i++){
            for(int j=0;j<n;j++){
                if(clear[i][j]==1){
                    for(int k=0;k<n;k++){
                        mat[i][k]=0;
                    }
                    for(int k=0;k<n;k++){
                        mat[k][j]=0;
                    }
                }
            }
        }
        return mat;
    }
    public static void printMat(int[][] mat,int n){
        for(int i=0;i<n;i++){
            for(int j=0;j<n;j++){
                System.out.print(mat[i][j]+" ");
            }
            System.out.println();
        }
    }
    public static int[][] scannerMat(){
        Scanner in=new Scanner(System.in);
        Integer n=in.nextInt();
        int[][] mat=new int[n][n];
        for(int i=0;i<n;i++){
            for(int j=0;j<n;j++){
                mat[i][j]=in.nextInt();
            }
        }
        return mat;
    }
    public static void main(String[] args){
        int[][] mat=scannerMat();
        printMat(mat,mat.length);
        mat=new Clearer().clearZero(mat,mat.length);
        printMat(mat,mat.length);

    }
}

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容