| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2081 人关注过本帖
标题:有n个人a1,a2…,an围成一圈报数,每报到m的人就出队,请问最后一个出队的人 ...
只看楼主 加入收藏
疏影neoxmu
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2008-10-29
收藏
 问题点数:0 回复次数:9 
有n个人a1,a2…,an围成一圈报数,每报到m的人就出队,请问最后一个出队的人编号是多少?
有n个人a1,a2…,an围成一圈报数,每报到m的人就出队,请问最后一个出队的人编号是多少。用数组编写一个函数模拟该过程。有请高手帮忙~~~
搜索更多相关主题的帖子: 数组 
2008-10-30 13:54
fantasy_______
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2008-9-21
收藏
得分:0 
可以用单循环链表
2008-10-30 16:51
疏影neoxmu
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2008-10-29
收藏
得分:0 
回复 2# 的帖子
如果不用链表呢?用的话怎么实现啊?
2008-10-30 22:28
enjay007
Rank: 1
来 自:西安
等 级:新手上路
帖 子:12
专家分:0
注 册:2008-10-21
收藏
得分:0 
好像是
约瑟夫环 的问题
2008-10-30 23:45
shadowofend
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2008-10-31
收藏
得分:0 
经典的问题 谭浩强的C书 里的习题里就有吧
2008-10-31 09:36
liyanhong
Rank: 3Rank: 3
来 自:水星
等 级:禁止访问
威 望:8
帖 子:1867
专家分:0
注 册:2008-5-3
收藏
得分:0 
typedef struct node* link;
#include<stdlib.h>
struct node
{
  int item;
  link next;
};

main(int argc,char *argv[])
{
  int i,N=atoi(argv[1]),M=atoi(argv[2]);
  link t=malloc(sizeof *t),x=t;
  t->item=1;t->next=t;//t/X->□x->□->t
  for(i=2;i<=N;i++)
  {
    x=(x->next=malloc(sizeof *x));
    x->item=i;x->next=t;
  }
  while(x!=x->next)
  {
    for(i=1;i<M;i++)x=x->next;//x->□□□□□□□□□
    x->next=x->next->next;
  }
  printf("%d\n",x->item);
}

//J(7)=J(111)->111=7
//J(6)=J(110)->101=5


[[it] 本帖最后由 liyanhong 于 2008-10-31 16:50 编辑 [/it]]

爱上你 是 我的错  可是离 开  又舍不得  听着你为我写的歌     好难过
如果说 我说如果  我们还 能  重新来过   不去计 较 谁对谁错  会怎么做
2008-10-31 12:40
wanjiang
Rank: 1
等 级:新手上路
帖 子:85
专家分:0
注 册:2008-10-25
收藏
得分:0 
这好像是个很经典的题目,但是不是为什么楼上的程序代码出现了不可识别的字符呢。
2008-10-31 16:45
httpwww
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-10-31
收藏
得分:0 
写的好象有点问题
2008-10-31 17:26
dave907
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2008-10-31
收藏
得分:0 
#include<stdio.h>
#define N 100              /*围成圈的最大人数*/
#define A 3                 /*报数为A的人出列*/
void main()
{int i,km,n,num[N],*p;
printf("input number of person n=");
scanf("%d",&n);
p=num;
for(i=0;i<n;i++)
*(p+i)=i+1;
i=0;k=0;m=0;
while(m<n-1)
{if(*p+i)!=0) k++;
if(k==A)
{*(p+i)=0;k=0;m++;}
i++;
if(i==n) i=0;
}
while(*p==0) p++;
printf("the last one is NO.%d\n",*p);
}
2008-10-31 20:19
iFreeBSD
Rank: 4
等 级:业余侠客
威 望:4
帖 子:474
专家分:236
注 册:2007-11-5
收藏
得分:0 
[bo][un]liyanhong[/un] 在 2008-10-31 12:40 的发言:[/bo]

 

人家要数组的,你给链表的。

without further ado, let’s get started
2008-10-31 20:35
快速回复:有n个人a1,a2…,an围成一圈报数,每报到m的人就出队,请问最后一个出队 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019479 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved