java - 如何打印以下图案
问题描述
对于给定的输入,我需要打印模式。例如对于 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
解决方案
您可以使用两组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
推荐阅读
- android - 运行应用程序时,我的片段布局文件无法显示按钮
- reactjs - 在 React 中创建日视图日历并显示事件
- c++ - 在 CMake 中添加链接器标志并自动执行 gcc 命令
- reactjs - 用数组反应 Recharts 数据
- json - 如何从 JDBC 模板获取 JSON 值
- r - 合并具有不同变量的行
- amazon-web-services - 如何使用 aws 网络负载均衡器将流量发送到非 aws 端点
- java - Apache mina-sshd ssh 客户端总是打印 EdDSA provider not supported
- javascript - 在 JavaScript 中使用 PHP 回显选项生成的选择选项
- php - 只选择开始和结束时间和日期之间的记录