aumn 2022-04-10 01:44 采纳率: 100%
浏览 67
已结题

在m只猴子聚在一起选大王,大家围成一圈, 按顺时针从1编号, 第一次从编号为1的开始报数, 以后循环进行, 当报到n时退出圈子, 下一只则重新从1开始报数, 圈子中剩下的最后一只猴子则为大王.

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法

为什么这个代码运行错误

我想要达到的结果
#include<iostream>
using namespace std;
struct node {
    int date;
    node* next = NULL;
};
int main()
{
    int T; int m[100], n[100];
    cin >> T;
    for (int i = 0; i < T; i++)
    {
        cin >> m[i] >> n[i];
    }
    for (int i = 0; i < T; i++)
    {
        node* p, * f, * t;
        t = new node;
        t->date = 1;
        p = t;
        for (int j = 2; j <= m[i]; j++)
        {

            f = new node;
            p->next = f;
            p = f;
            p->date = j;

        }
        p->next = t;
        for (int h = 0; h < m[i] - 1; h++)
        {
            for (int s = 1; s < n[i]; s++) t = t->next;//t yekaishibianhuale
            t->next = t->next->next;
        }
        if (n[i] == 1)cout << m[i]<<endl;
        else
        cout << t->date << endl;
    }
}

  • 写回答

1条回答 默认 最新

  • 赵4老师 2022-04-12 13:20
    关注

    仅供参考:

    //假设有n个人团团围做,从第1个人开始数数,数到第m个人时候,第m个人出列,
    //然后继续从1开始数数,数到第m个人退出
    #include <stdio.h>
    #include <conio.h>
    int i,k,t;
    int n,m;
    static char f[1001];//0该座位未出圈,1该座位已出圈
    void main() {
        while (1) {
            printf("Input n m(1000>=n>=m>=1):");
            fflush(stdout);
            rewind(stdin);
            if (2==scanf("%d%d",&n,&m)) {
                if (1000>=n && n>=m && m>=1) break;
            }
        }
        t=0;//已出圈总人数
        i=1;//座位编号
        k=1;//当前要数的数
        while (1) {
            if (0==f[i]) {
                if (m==k) {
                    t++;
                    f[i]=1;
                    printf("%3d ",i);
                    if (0==t%10) printf("\n");
                    if (t>=n) break;
                }
                k++;if (k>m) k=1;
            }
            i++;if (i>n) i=1;
        }
        cprintf("Press any key ...");
        getch();
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 7月13日
  • 已采纳回答 7月5日
  • 创建了问题 4月10日

悬赏问题

  • ¥15 想问一下树莓派接上显示屏后出现如图所示画面,是什么问题导致的
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号