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

C#实现级联矩阵盒子开闭切换算法作业问题求解

C#盒子切换算法实现修正

问题规则

  • 输入整数N,对应N个带编号的盒子,初始全部为关闭状态,数组存储时关闭位置存0,打开位置存对应盒子编号,1号盒子始终保持关闭
  • 第一轮步长为2:从2号盒子开始,每隔2个盒子切换一次开闭状态,直到遍历完N号盒子
  • 后续轮次步长依次递增为3、4……直到N,每轮从编号等于当前步长的盒子开始,每隔对应步长切换一次盒子状态,直到遍历完N号盒子
  • 所有轮次结束后输出最终数组状态
  • 参考示例:N=10时,正确输出为0 - 2 - 3 - 0 - 5 - 6 - 7 - 0 - 0 - 10

原有代码错误点

  • 外层循环从步长1开始执行,不符合规则要求步长从2起步的设定
  • 内层循环步进值固定为1,没有按照当前步长间隔遍历,导致每轮都会连续切换后续所有盒子的状态,和"每隔对应步长切换"的要求完全不符
  • 没有对1号盒子做始终关闭的强制约束

修正后可运行代码

int n = int.Parse(Console.ReadLine());
int[] A = new int[n]; // C#中int数组默认初始值全为0,对应初始所有盒子关闭

// 外层遍历步长,从2到n
for (int step = 2; step <= n; step++)
{
    // 内层从编号等于步长的盒子(对应数组索引为step-1)开始,每次前进step个位置
    for (int x = step - 1; x < n; x += step)
    {
        // 切换开闭状态
        A[x] = A[x] == 0 ? x + 1 : 0;
    }
}

// 强制1号盒子(数组索引0位置)始终为关闭状态
A[0] = 0;

// 按示例格式拼接输出结果
Console.WriteLine(string.Join(" - ", A));

代码运行输入10时,输出结果和示例完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 21:18:21