首页 > 解决方案 > 如何打印以下图案

问题描述

对于给定的输入,我需要打印模式。例如对于 input = 6 我必须打印:

MMMMMMSDDDDDD
MMMMMSSSDDDDD
MMMMSSSSSDDDD
MMMSSSSSSSDDD
MMSSSSSSSSSDD
MSSSSSSSSSSSD
CSSSSSSSSSSSK
CCSSSSSSSSSKK
CCCSSSSSSSKKK
CCCCSSSSSKKKK
CCCCCSSSKKKKK
CCCCCCSKKKKKK 

我已经尝试过,但不能比这更进一步

public class tgk {

public static void main(String[] args)  {

    Scanner sc = new Scanner(System.in);

    int size = sc.nextInt();

    int half = ((2*size)+1)/2;
     for (int i = 0; i < size ; i++) 
     { 
         for (int j = size; j > i; j--) 
         {
         System.out.print("M");
          }
     for (int k = half+1 ; k > half - i; k--) 
     {
         System.out.print("S");
     }






    System.out.println();
 }


     for(int i = size; i > 0; i--)
     {
         for (int j = size; j >= i; j--) {
             System.out.print("C");
         }
         for (int k = 0; k < (i * 2 - 1); k++) {
             System.out.print("S");
         }



         System.out.println();
     }
}

}

如果输入 = 3 它应该是

MMMSDDD
MMSSSDD
MSSSSSD
CSSSSSK
CCSSSKK
CCCSKKK

标签: javaloopsnested-loops

解决方案


您可以使用两组for循环打印图案的每一半。假设input变量包含问题的大小

int input = 3;

for (int i = 0; i < input; i++) {
    for (int j = 0; j < input - i; j++) {
        System.out.print('M');
    }
    for (int j = 0; j < 2 * i + 1; j++) {
        System.out.print('S');
    }
    for (int j = 0; j < input - i; j++) {
        System.out.print('D');
    }
    System.out.println();
}
for (int i = input - 1; i >= 0; i--) {
    for (int j = 0; j < input - i; j++) {
        System.out.print('C');
    }
    for (int j = 0; j < 2 * i + 1; j++) {
        System.out.print('S');
    }
    for (int j = 0; j < input - i; j++) {
        System.out.print('K');
    }
    System.out.println();
}

将打印input = 3

MMMSDDD
MMSSSDD
MSSSSSD
CSSSSSK
CCSSSKK
CCCSKKK

input = 6

MMMMMMSDDDDDD
MMMMMSSSDDDDD
MMMMSSSSSDDDD
MMMSSSSSSSDDD
MMSSSSSSSSSDD
MSSSSSSSSSSSD
CSSSSSSSSSSSK
CCSSSSSSSSSKK
CCCSSSSSSSKKK
CCCCSSSSSKKKK
CCCCCSSSKKKKK
CCCCCCSKKKKKK

推荐阅读