问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c与c++语言 求解Josephus问题

发布网友 发布时间:2023-05-27 05:56

我来回答

3个回答

热心网友 时间:2024-11-25 10:05

#include <stdio.h>
#include <stdlib.h>
pNode* createCircleList(int n){
    pNode* head=(pNode*)malloc(sizeof(pNode));
    head->next=NULL;
    head->data=0;
    pNode* node=head;
    for(int i=1;i<n-1;i++){
        pNode* p=(pNode*)malloc(sizeof(pNode));
        p->data=i;
        p->next=NULL;
        node->next=p;
        node=node->next;
    }
    pNode* p=(pNode*)malloc(sizeof(pNode));
    p->data=n;
    p->next=head;
    node->next=p;
    return head;
}

pNode* find(pNode* head,int n){
    pNode* p=head;
    for(int i=1;i<n;i++)
        p=p->next;
    return p;
}

void remove(pNode* node,int m,int count){
    pNode* p=node;
    for(int i=0;i<count;i++){
        printf("%d ",p);
        p=p->next;
    }
    printf("\n");
    p=node;
    if(count!=1){
        for(int i=1;i<m-1;i++)
            p=p->next;
        pNode* pDel=p->next;
        p->next=pDel->next;
        pDel=NULL;
        free(pDel);
        remove(p->next,m,count-1);
    }else{
        node->next=NULL;
        free(node->next);
        printf("%d\n",p->data);
    }
}

int main()
{
    
    int n,k,m;
    scanf("%d %d %d",&n,&k,&m);
    pNode* head=createCircleList(n);
    printf("%d\n",head);
    pNode* start=find(head,k);
    printf("%d\n",start);
    remove(start,m,n);
}

输出的最后一个信息是数据,其他数据是为了方便理解和查看错误

热心网友 时间:2024-11-25 10:06

这个用链表来实现非常简单,先创建一个环状的链表,首尾相连的,实现非常简单,手机回答的,就不贴程序了

热心网友 时间:2024-11-25 10:06

1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <string.h>
4 int didSolve(int n,int m) {
5 int p[50];
6 memset(p,0,sizeof(int)*50);
7
8 int i = 0;
9 int c = 0;
10 int r = n;
11 while(r != 1) {
12 c = 0;
13 while(c != m) {
14 if (p[i] == 0) {
15 printf("p(%d) say:%d\n",i+1,c);
16 c ++;
17 }
18 if (c == m) {
19 p[i] = 1;
20 printf("%d \n",i + 1);
21 }
22 i ++;
23 if (i == n) {
24 i = 0;
25 }
26 }
27 r --;
28 }
29 return 0;
30 }
31
32 int deal() {
33 int n=0,m=0;
34 scanf("%d %d",&n,&m);
35 didSolve(n,m);
36 return 0;
37 }
38 int main(int argc,char *argv[]) {
39 int testCase = 0;
40 scanf("%d",&testCase);
41 while(testCase --) {
42 deal();
43 }
44 return 0;
45 }
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
企业培训学到了什么 培训感悟简短 有关培训的感悟 通过培训学到什么 培训你学到了什么 领导问培训学到什么怎么回复 Linux系统安装FTP服务器 Linux系统的网络文件共享 建筑的七盏明灯的内容简介 面向对象设计七大原则 简单说 交互设计七大定律 招标代理多久换一次 c++ Josephus问题 招标代理机构有没有权利擅自更改招标文件,如果擅自更改怎么办?_百度... 悬浮窗和分屏算切屏吗 Josephus问题:1,2,3...n共n个人围成一个圈,从1开始报数,数到k的人离... 招标过程中由于招标代理公司的原因造成重新招标时可以另选招标代理机 ... Josephus问题 C++编程 大财神app网络请求失败 建筑业企业资质新标准 什么是成药性 农行县域机构志愿服务协议怎么填 哪位哥们知道好的ps的网站啊? PS 的一些常用模板的网址??比如天空什么的??求大神给几个!! 事求可、功求成 的意思 “仰天大笑出门去,我辈岂是蓬蒿人”这首诗的作者是? pi膜固化的时间设置为 拼多多好友开语音对方能听到吗 三水大塘附近哪里有耐克店 Run-time error&#39;13&#39;:Type mismatch 开元北大街耐克专卖店地址 你知道我用什么才能留住你,博尔赫斯吗? C语言数据结构josephus问题解决方案 帮我改正下 第一次招标失败,第二次招标换了招标代理机构,公告需要写二次招标吗? 试编写一个求解Josephus问题的函数 甲方可以更换招标代理机构吗 废标后重新招标可以换代理机构吗? 第三方招标代理机构多久更换一次 ...3,白细胞13-18,杆菌—偶见,杂菌+++是什么意思。 偷换标主体单位承担什么责任? 作文《我渴望这一天早日到来》700 盼望同学聚会早日到来的词语?盼望同学会早日到来的词语? BYD473QE的技术特点 &quot;我渴望这一天早日到来&quot;500字作文 ...浊音、清音。看书看不懂视频也看不懂什么意思! 我们热切愿望着新图书馆建成的那一天早日到来修改病句 我希望那一天早日到来 英语翻译 我们热切地愿望着2014年奥运会的早日到来。 (修改病句) 作为幼儿教师,在组织情子活动时应该给家长什么样的建议? 什么立四什么 用英语介绍磨山