You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:如何用嵌套for循环实现X与Y组成的指定图案打印?

生成指定X/Y组成的图案

需求说明

根据输入的数字,打印由X和Y组成的指定图案,输入输出示例如下:

输入

3
7
4

预期输出

XXXY
XXYY
XYYY

XXXXXXXY
XXXXXXYY
XXXXXYYY
XXXXYYYY
XXXYYYYY
XXYYYYYY
XYYYYYYY

XXXXY
XXXYY
XXYYY
XYYYY

问题代码

我尝试使用嵌套for循环实现,但输出不符合预期,代码如下:

String ret = "";
for (int row = 0; row < size; row++) //size is the input
{
  for (int col = 0; col < size; col++)
  {
    ret += "X";
  }
  for (int col = 0; col < size; col++)
  {
    ret += "Y";
  }
  ret += "\n";
}
return ret;

实际输出

XXXYYY
XXXYYY
XXXYYY

XXXXXXXYYYYYYY
XXXXXXXYYYYYYY
XXXXXXXYYYYYYY
XXXXXXXYYYYYYY
XXXXXXXYYYYYYY
XXXXXXXYYYYYYY
XXXXXXXYYYYYYY

XXXXYYYY
XXXXYYYY
XXXXYYYY
XXXXYYYY

错误分析

原代码每行固定输出size个X加size个Y,完全没贴合预期图案的规律。观察预期输出的规律:

  • 总共有size行
  • 第row行(从0开始计数):
    • X的数量是 size - row
    • Y的数量是 row + 1
    • 每行总长度为 size + 1,和示例中的字符数一致(比如输入3时每行4个字符,3+1=4)

修正后的代码

String ret = "";
for (int row = 0; row < size; row++) {
    // 添加对应数量的X
    for (int col = 0; col < size - row; col++) {
        ret += "X";
    }
    // 添加对应数量的Y
    for (int col = 0; col < row + 1; col++) {
        ret += "Y";
    }
    ret += "\n";
}
return ret;

验证结果

以输入3为例:

  • row=0:3个X + 1个Y → XXXY
  • row=1:2个X + 2个Y → XXYY
  • row=2:1个X + 3个Y → XYYY
    完全匹配预期输出。

内容的提问来源于stack exchange,提问作者realBunger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 23:50:27