как распечатать шаблон ниже - PullRequest
0 голосов
/ 12 февраля 2019

для заданного ввода мне нужно распечатать шаблон.Например, для ввода = 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();
     }
}

}

, если input = 3, это должно быть

MMMSDDD
MMSSSDD
MSSSSSD
CSSSSSK
CCSSSKK
CCCSKKK

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Я не знаю почему, но я действительно хотел, чтобы он работал только с одним набором циклов for:

    int number = 8;

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

Так что для 8 (как в коде) он печатает:

MMMMMMMMSDDDDDDDD
MMMMMMMSSSDDDDDDD
MMMMMMSSSSSDDDDDD
MMMMMSSSSSSSDDDDD
MMMMSSSSSSSSSDDDD
MMMSSSSSSSSSSSDDD
MMSSSSSSSSSSSSSDD
MSSSSSSSSSSSSSSSD
CSSSSSSSSSSSSSSSK
CCSSSSSSSSSSSSSKK
CCCSSSSSSSSSSSKKK
CCCCSSSSSSSSSKKKK
CCCCCSSSSSSSKKKKK
CCCCCCSSSSSKKKKKK
CCCCCCCSSSKKKKKKK
CCCCCCCCSKKKKKKKK

... или для 3:

MMMSDDD
MMSSSDD
MSSSSSD
CSSSSSK
CCSSSKK
CCCSKKK
0 голосов
/ 12 февраля 2019

Вы можете использовать два набора 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
...