【问题标题】:generate NxN matrix with only 0 and 1生成只有 0 和 1 的 NxN 矩阵
【发布时间】:2014-01-25 19:39:32
【问题描述】:

我在这里尝试做的是使用 Java 生成一个完整的矩阵列表,其中 NxN 仅填充 1 和 0

我知道当 n 变大时,这应该是这个列表中的大量矩阵。

我能想到的唯一方法是在 for 循环内的 for 循环内构建一个 for 循环......等等。

我不需要这个函数对大量 n 起作用,6 就足够了。我的方法很庞大,需要 36 个循环才能实现我的目标。

谁能为我的问题想出一个聪明的解决方案?

ps.递归函数可能有帮助,但我想不通。

【问题讨论】:

  • n "节点"??你的意思是nxn?
  • 递归:设置下一个元素为0,递归。之后将相同的元素设置为 1,递归。并处理基本情况。就是这样。
  • @KarolyHorvath 是的,抱歉打错了:)
  • 您将拥有 2^(n^2) 个矩阵。 n=6,即 68.719.476.736
  • @KarolyHorvath 你能帮我详细介绍一下你的递归吗?

标签: matrix


【解决方案1】:

希望这会有所帮助。

    private int[][] matrix; 
    public void CreateMatrix(int n)
    {
        this.matrix = new int[n][n](); //initialize a NxN 2D array
        createMatrixRow(0); //start filling from row 0
    }

    //start filling your matrix row by row
    public void createMatrixRow(int rowNumber)
    {
       if(rowNumber==n) //break the recursion when matrix is full
           return;
       for(int i = 0; i<n;i++)
       {
          //assign values in the matrix based on row & column numbers
          matrix[rowNumber][i] = generateValue(rowNumber, i);
       }

       createMatrixRow(rowNumber++); //recurse until your matrix is full
    }


    //Rules for generating values to be included here. I have written sample to generate identity matrix for identity matrix
    public int generateValue(int rowNumber, int columnNumber)
    {
       if(rowNumber == columnNumber)
          return 1;
       else 
          return 0
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-15
    • 2019-12-20
    • 1970-01-01
    • 1970-01-01
    • 2019-10-14
    • 1970-01-01
    相关资源
    最近更新 更多