secant26 2021-12-24 14:10 采纳率: 100%
浏览 47
已结题

C语言约瑟夫问题,不知道代码错在哪里

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
#include <stdio.h>

int main()
{
    int A[100],B[100],N,n,m,i,j,Yet,Initial,Out,k;
    for(i=0;i<100;i++){
        scanf("%d",&(A[i]));
        scanf("%d",&(B[i]));
        if(A[i]==0) break;
    }
    N=i;//用N记录输入数据的总组数
    int b[N]; //用于存储不同m, n对应的猴王的编号
    for(k=0;k<N;k++){
        n=A[k],m=B[k],Initial=0;
        //Initial是最开始报数的猴的编号【注意归零问题】
        int a[n];
        for(i=0;i<n;i++) a[i]=1;
        //将数组a[n]中的每个元素都赋初值为1
        for(i=0;i<n-1;i++){
            //只做n-1次循环,每次循环出局一猴,最后正好只剩下一猴
            Yet=0;
            for(j=Initial;Yet<m;j++){
                if(j>=n) j=j%n;
                if(a[j]==1) Yet++;
                //Yet表示已报数的猴的累计数目
            }
            Out=j;//变量Out表示出局的猴的编号
            if(Out>=n) Out=Out%n;
            a[Out]=0;
            Initial=j+1;
        }
        for(i=0;i<n;i++){
            if(a[i]==1) b[k]=i+1;
        }
    }
    for(i=0;i<N;i++) printf("%d\n",b[i]);
    return 0;
}
运行结果及报错内容

输入:
12 4
0 0

输出:
12

我的解答思路和尝试过的方法
我想要达到的结果
  • 写回答

2条回答 默认 最新

  • Admini$trat0r .net领域新星创作者 2021-12-24 14:11
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月1日
  • 已采纳回答 12月24日
  • 创建了问题 12月24日

悬赏问题

  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100