标题:一道经典的C语言题。我是想了好久啊。就是无法弄出头绪
只看楼主
小飞蛋
Rank: 2
来 自:江西财经大学
等 级:论坛游民
帖 子:9
专家分:20
注 册:2012-12-21
结帖率:100%
已结贴  问题点数:10 回复次数:18 
一道经典的C语言题。我是想了好久啊。就是无法弄出头绪
题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
搜索更多相关主题的帖子: 经典的 C语言 
2012-12-23 21:38
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
得分:0 
是好经典的约瑟夫环。。。。
收到的鲜花
  • 小飞蛋2012-12-23 22:19 送鲜花  1朵   附言:我很赞同


[fly]存在即是合理[/fly]
2012-12-23 21:49
冰冻零点
Rank: 3Rank: 3
来 自:西安电子科技大学
等 级:论坛游侠
帖 子:81
专家分:136
注 册:2012-9-18
得分:2 
一个思路仅供参考
手机打的不容易
int left[n]={0};
int count=0,i;
while(1)
{for(i=0;i<n;i++)
{if(left[i])continue;
else count++;
if(!count%3)left[i]=1;
if(count==n-1) break;

if(count==n-1) break;
}
收到的鲜花
  • 小飞蛋2012-12-23 22:19 送鲜花  3朵   附言:好文章

好好学习,天天向上
2012-12-23 21:54
额外覆盖
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:城市猎人
威 望:6
帖 子:1726
专家分:5757
注 册:2012-9-22
得分:0 
你可以设置一个数组,到末尾后跳到开头以表示围成一圈;可以给每一个元素设置初始值为1,当他退出游戏后改为0,下一次循环遇到0就不计数,直到最后一个!我是菜鸟,就没法给你代码了!不过坛子里有很多,百度也行!约瑟夫环一搜就有
收到的鲜花
  • 小飞蛋2012-12-23 22:20 送鲜花  2朵   附言:好文章

我现在所学的一切都是为了游戏!!!为了游戏,加油!加油!努力!
2012-12-23 22:05
hit小龙
Rank: 6Rank: 6
等 级:侠之大者
帖 子:173
专家分:462
注 册:2012-12-6
得分:0 
约瑟夫问题哦
我们实验刚完成的
用结构体弄一链表
定义一个还结构体数组
头尾相连构成环
然后按常规编写判断就好
共同学习
收到的鲜花
  • 小飞蛋2012-12-23 22:20 送鲜花  1朵   附言:原创内容
2012-12-23 22:16
额外覆盖
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:城市猎人
威 望:6
帖 子:1726
专家分:5757
注 册:2012-9-22
得分:0 
回复 5楼 hit小龙
我看了一下,很多程序用链表来做要方便很多,不过我还没学到链表哪里去,何时抽看先看看!

我现在所学的一切都是为了游戏!!!为了游戏,加油!加油!努力!
2012-12-23 22:41
xexxql
Rank: 1
等 级:新手上路
帖 子:8
专家分:4
注 册:2012-12-21
得分:2 
#include
#define MAX 255
int main()
{
    int people[MAX] = {0};
    int p;
    int number;
    int j;
    int k;
    int q;
    int w;
    number = 1;
    q = 0;
    w = 0;
    printf("input the number of students: \n");
    scanf("%d",p);
    j = p - 1;
    while(1)
    {
    for(k = 0;k<=j;k++)
    {
        if(people[k] == 1000)
        {
            continue;
            q += 1;
        }

        people[k] = number;
        number += 1;
   

        if(people[k] % 3 == 0)
        {
            people[k] = 1000;
        }
        else
            w = k;
    }


    if(q == j)
    {
        printf("%d", k + 1);
        break;
    }   
    q = 0;
    }
    getchar();
    return 0;
}
我觉得对,但是有错误,求指导........
2012-12-23 22:48
xexxql
Rank: 1
等 级:新手上路
帖 子:8
专家分:4
注 册:2012-12-21
得分:2 
#include<stdio.h>
#define MAX 255

int main()
{
    int people[MAX] = {0};
    int p;
    int number;
    int j;
    int k;
    int q;
    int w;

    number = 1;
    q = 0;
    w = 0;

    printf("input the number of students: \n");
    scanf("%d",&p);
    j = p - 1;

    while(1)
    {
    for(k = 0;k<=j;k++)
    {
        if(people[k] == 1000)
        {
            q += 1;
            continue;
            
        }


        people[k] = number;
        number += 1;
        

        if(people[k] % 3 == 0)
        {
            people[k] = 1000;
        }
        else
            w = k;

    }
   
   
    if(q == j)
    {
        printf("%d", w + 1);
        getchar();
        break;
    }        
    q = 0;   
    }
    getchar();
    return 0;
}


找到错误了,这个是对的,就是太麻烦了
2012-12-23 22:53
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
得分:0 
循环链表

                                         
===========深入<----------------->浅出============
2012-12-24 09:39
梁朝斌
Rank: 4
等 级:业余侠客
帖 子:192
专家分:288
注 册:2012-10-21
得分:0 
看看

菜鸟也疯狂
2012-12-24 10:46



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-393109-1-1.html




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

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