求解用C语言数组实现约瑟夫环问题?

如题所述

第1个回答  2007-11-27
如果只需要结果的话可以把数到3的人置零,然后输出不是零的数就OK了
或者
可以先数学递推一下,比模拟效率高多了~~!!
具体的看我空间这直接给你代码吧
#include <stdio.h>
int main()
{
int n, m, i, s=0;
printf ("N M = "); scanf("%d%d", &n, &m);
for (i=2; i<=n; i++) s=(s+m)%i;
printf ("The winner is %d\n", s+1);
}

参考资料:hi.baidu.com/lookforabetterplace_zcci123

本回答被提问者采纳

约瑟夫环(单向循环链表)_C语言「抄作业」
约瑟夫环问题 该问题求解Josephus与最后存活的另一人最初的位次。具体而言,当剩余人数为n时,从第一个人开始,每报数k次后,淘汰当前报数者,直到最后剩下2人。最终,Josephus与另一人分别位于第16和第31的位置上。示例输出 在C语言抄作业系列中,提供了关于约瑟夫环问题的代码实现。该实现旨在解决Joseph...

数据结构中的约瑟夫环问题用C语言怎么编写出来啊?
1. 程序分析:这是一个比较经典的算法--约瑟夫环问题.2.个人分析: 算法比较经典,对于这样的问题本应该使用链表的形式会比较容易.约瑟夫环算法 则体现了使用数组来完成链表该完成的功能,虽然形式上完全不相同,但却求出了 相同的结果.有异曲同工之妙.总之我个人认为是数组中非常经典的算法了.希望本 ...

约瑟夫环问题怎么解决啊?请用C语言写代码,谢谢!
include"MyNode.h" \/\/文件1 Node::Node( ){ next = NULL;} Node::Node(Node_entry item, Node *add_on){ entry = item;next = add_on;} --- include<iostream.h> \/\/文件2 typedef int Node_entry;struct Node { \/\/ data members Node_entry entry;Node *next;\/\/ constructor...

用c语言实现约瑟夫环
正好之前写过基础的约瑟夫环,稍作修改就可以满足你的题目 include <stdio.h>#include <stdlib.h>typedef struct _node { int id; int key; struct _node *next;} Linklist;int main() {int n, m;scanf("%d %d", &n, &m);int i, count = 0;Linklist *head = (Linklist*...

用C语言解决一个实际问题(不要太长)
约瑟夫环(很有名的数学问题)已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。void JOSEPHUS(int n,int k,int m) \/\/n为总人数,k...

求助, 约瑟夫环问题(C语言)
\/\/使用q为起始点 do{ i=0;\/\/避免m减一后为零的问题 while(i!=m){ q=q->next;i++;} p=q->next;q->next=p->next;printf(" %d",p->num);m=p->val;\/\/你少了这一步。m=m-1;\/\/提前使q停下,p=q->next,p就是目标。free(p);}while(q->next!=q);printf(" %d\\n",...

求用循环队列解决约瑟夫环问题的C语言代码,急,速度!!!
void Fmade(int x, int y, int z);void main(){ int a, b, c;\/\/t i, j, k;\/\/t aa[100], b[100];cout<<"请输入总人数:";cin>>a;cout<<endl<<"请输入开始位子:";cin>>b;cout<<endl<<"请输入步长:";cin>>c;Fmade(a, b, c);} void Fmade(int x, int y, ...

求看下这个用C语言写的约瑟夫环代码错在哪儿
void del_Joseph(Joseph*current_p,Joseph *pre_p)这个函数去掉参数列表,直接用全局变量就行,不去掉反而会错。因为,当他们作为参数传递时,本身的值是不能被改变的。而你在函数中释放掉current_p所指向的空间,但current_p仍指向该空间,导致后面出错。发现这个问题,只要你打印下每次删除的值就行了...

C语言编程丨循环链表实现约瑟夫环!真可谓无所不能的C!
约瑟夫环问题是一个经典的应用场景,描述了在一定规则下的淘汰机制。该问题的基本设定是 n 个人围坐在圆桌周围,从指定编号开始,按照特定规则进行淘汰,直到仅剩一人。循环链表是实现该问题的关键结构。考虑一个示例场景:假设圆桌上有 5 人,从编号为 3 的人开始,每数到 2 的人数淘汰一人。具体流程...

求助C语言大师! 这个是约瑟夫环的程序代码,跪求给每一段代码打上正确...
\/\/利用for循环不断的创建新的内存空间,数量为参数n for(int i=2;i<=n;i++){ printf("输入第%d个人的密码。\\n",i);\/\/创建了一个新的内存空间,并且使p指向新的头地址 p = (LNode *)malloc(sizeof(struct LNode));\/\/新空间数据data1和num的输入 scanf("%d",&p->data1);p->num...

相似回答