如何打印这种模式?

时间:2013-05-05 02:48:43

标签: java algorithm

我需要打印以下图案

0  0  0  0  0<br>
0  #  #  #  0<br>
0  #  0  #  0<br>
0  #  #  #  0<br>
0  0  0  0  0

我写的代码打印了这个

0  0  0  0  0<br>
0  #  #  #  0<br>
0  #  #  #  0<br>
0  #  #  #  0<br>
0  0  0  0  0<br>

,代码是

public class PrintPattern {

public static void main(String[] args) {


    int [][] arr = new int[5][5];

    for(int i=0;i<5;i++){

        for(int j=0;j<5;j++){

            if(i>0 && i<4 && j!=0 && j!=4){
                arr[i][j]=1;
            }

        }
    }
    for(int i=0;i<5;i++){

        for(int j=0;j<5;j++){
            if(arr[i][j]==1){
                System.out.print(" "+"#"+" ");
            }
            else
                System.out.print(" "+arr[i][j]+" ");
        }
        System.out.println();
    }



}
}

另外,我需要对n的任何n x n = {2k+1,k>0}矩阵进行概括。

2 个答案:

答案 0 :(得分:3)

你应该试着找出常数。

这里:

int center = n / 2;
for each node(x, y):
    int dist = max(abs(x - center), abs(y - center));
    if (dist % 2 == 0) ch = '0';
    else ch = '#'

答案 1 :(得分:1)

您尝试以下代码

public class PrintPattern {

    public static void main(String[] args) {


        for(int i=0;i<5;i++) {

            for(int j=0;j<5;j++) {

                if(i==0 || i==4) {

                    System.out.print("0 ");
                    continue;
                }
                else if(j>0 && j<4 && (i != 2 || j != 2)) {

                   System.out.print("# ");
                   continue;
               }
               else
               System.out.print("0 ");
          }

          System.out.print("\n");
       }

    }
}