为了账号安全,请及时绑定邮箱和手机立即绑定

如何打印以下图案

如何打印以下图案

ibeautiful 2022-06-15 16:35:00
对于给定的输入,我需要打印模式。例如对于 input = 6 我必须打印:MMMMMMSDDDDDDMMMMMSSSDDDDDMMMMSSSSSDDDDMMMSSSSSSSDDDMMSSSSSSSSSDDMSSSSSSSSSSSDCSSSSSSSSSSSKCCSSSSSSSSSKKCCCSSSSSSSKKKCCCCSSSSSKKKKCCCCCSSSKKKKKCCCCCCSKKKKKK 我已经尝试过,但不能比这更进一步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 它应该是MMMSDDDMMSSSDDMSSSSSDCSSSSSKCCSSSKKCCCSKKK
查看完整描述

2 回答

?
撒科打诨

TA贡献1934条经验 获得超2个赞

您可以使用两组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


查看完整回答
反对 回复 2022-06-15
?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

我不知道为什么,但我真的希望它只使用一组 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


查看完整回答
反对 回复 2022-06-15
  • 2 回答
  • 0 关注
  • 173 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信