SCP-errorOWO 2024-03-30 18:25 采纳率: 0%
浏览 2

不会做,是约瑟夫问题的改版

不会做求帮忙!需要C++的
有n个人排成一圈,从1到n编号。从第一个人开始依次报数(第一个人报的数是1,下一个人报的数是2(当前这个人报的数字等于前面那个人报的数字加一),报数一共进行 n轮,对于第 i(1≤i≤n)轮,数到i的平方的人出列,下一个人继续从1开始报数。结束的时候所有人都会出列。请依次输出每一轮出列的人的编号。

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-03-30 18:25
    关注

    引自免费微信小程序:皆我百晓生

    解题步骤如下:

    1. 初始化一个整型变量 i 表示当前轮数,初始值为 0。
    2. 定义一个整型数组 arr,用于存储每个轮数出列的人的编号。
    3. 使用一个循环遍历 n 次: a. 当轮数 i 超过0时,将 arr[i] 的相应元素赋给 out 变量,并清空数组。 b. 否则,获取 arr[i] 的值,即当前轮数 i 的平方。 c. 将 arr[i] 的值添加到 out 数组末尾,表示下一个轮数的出列人。 d. 在循环内执行余下的所有轮数操作。
    4. 循环结束后,返回 out 数组中的所有元素。

    以下是 C++ 实现的代码示例:

    #include <iostream>
    #include <vector>
    
    std::vector<int> printOuts(int n, std::vector<int>& arr) {
        int i = 0;
        std::vector<int> out(n);
    
        while (i <= n) {
            out[i] = i * i;
            ++i;
        }
    
        return out;
    }
    
    int main() {
        int n;
        std::cout << "Enter the number of rounds: ";
        std::cin >> n;
    
        std::vector<int> arr(n);
        for (int i = 0; i < n; ++i) {
            arr[i] = i + 1;
        }
    
        std::vector<int> outs = printOuts(n, arr);
    
        for (const auto& num : outs) {
            std::cout << "Number: " << num << std::endl;
        }
    
        return 0;
    }
    

    这个代码定义了一个名为 printOuts 的函数,它接收两个参数:目标轮数 n 和原始排序的整数向量 arr。函数内部通过迭代找出第 n 次轮的所有出列人的编号,并将其输出到控制台。在主程序中,我们要求用户输入想要处理的轮数 n,并调用 printOuts 函数并将结果保存到 outs 数组中。然后,我们遍历 outs 数组并打印出每一项编号。

    在运行此代码后,您将看到类似以下的结果:

    Enter the number of rounds: 5
    Number: 1
    Number: 4
    Number: 9
    Number: 16
    Number: 25
    

    这就是按需调整 n 值后的每一轮出列人的编号。其中第一轮和第五轮出列的是重复号码,而前四轮则对应各轮出列人数的平方。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 3月30日

悬赏问题

  • ¥15 preLaunchTask"C/C++: aarch64- apple-darwin22-g++-14 生成活动 文件”已终止,退出代码为-1。
  • ¥18 关于#贝叶斯概率#的问题:这篇文章中利用em算法求出了对数似然值作为概率表参数,然后进行概率表计算,这个概率表是怎样计算的呀
  • ¥20 C#上传XML格式数据
  • ¥15 elementui上传结合oss接口断点续传,现在只差停止上传和继续上传,各大精英看下
  • ¥100 单片机hardfaulr
  • ¥20 手机截图相片分辨率降低一半
  • ¥50 求一段sql语句,遇到小难题了,可以50米解决
  • ¥15 速求,对多种商品的购买力优化问题(用遗传算法、枚举法、粒子群算法、模拟退火算法等方法求解)
  • ¥100 速求!商品购买力最优化问题(用遗传算法求解,给出python代码)
  • ¥15 虚拟机检测,可以是封装好的DLL,可付费