标题:约瑟夫问题 用数组完成 相关帖子并没有看懂qaq
只看楼主
komorebi0110
Rank: 2
来 自:上海
等 级:论坛游民
帖 子:145
专家分:17
注 册:2019-11-23
结帖率:96.88%
已结贴  问题点数:20 回复次数:4 
约瑟夫问题 用数组完成 相关帖子并没有看懂qaq
输入两个正整数 n 和 m( (1<m<n<=50)),有 n 个人围成一圈,按顺序从 1 到 n 编号。从第一个人开始报数,报数 m 的人退出圈子,下一个人从 1 开始重新报数,报数 m 的人退出圈子。如此循环,直到留下最后一个人。请按退出顺序输出退出圈子的人的编号,以及最后一个人的编号。
输入输出示例:括号内为说明
输入:
5               (n个人报数,n=5)
3               (报数m=3)
输出:
No1: 3          (第1个退出圈子的人编号是3)
No2: 1         (第2个退出圈子的人编号是1)
No3: 5         (第3个退出圈子的人编号是5)
No4: 2         (第4个退出圈子的人编号是2)
Last No is: 4   (最后一个人的编号是4)
搜索更多相关主题的帖子: 约瑟夫 退出 编号 报数 一个人 
2019-12-23 01:52
八画小子
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:37
帖 子:705
专家分:2043
注 册:2010-11-11
得分:0 
你可以先把尝试写写啊
2019-12-23 09:13
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:10 
这题目挺恶心的
a. 不是从0开始计数,而是从1开始计数
b. 输出不按规律都写成 No序号,最后一个要写成 Last No is

#include <stdio.h>

int main( void )
{
    unsigned n, m;
    scanf( "%u%u", &n, &m );

    // 用数组模拟链表
    unsigned s[51];
    for( unsigned i=1; i!=n+1; ++i )
        s[i] = i%n+1;

    unsigned head = n;
    for( unsigned i=0; i!=n; ++i )
    {
        // 前进 (m+n-i-1)%(n-i) 步
        for( unsigned k=(m+n-i-1)%(n-i); k!=0; --k )
            head = s[head];

        if( i+1 != n )
            printf( "No%u: %u\n", i+1, s[head] );
        else
            printf( "Last No is: %u\n", s[head] );

        s[head] = s[s[head]];
    }
}

2019-12-23 09:33
自学的数学
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:46
帖 子:967
专家分:4146
注 册:2017-11-15
得分:10 
程序代码:
#include<stdio.h>
int main(void)
{
int count, i, m, n, no;
int num[50];
int *p;
scanf("%d%d", &n, &m);
for(i = 0; i < n; i++)
num[i] = i + 1;
p = num;
/*---------*/
num[i]=i+1;
count=no=1;
for(;no!=n;){
if(count==m){
printf("No%d: %d\n", no, *p);
no++;
*p=0;
count=0;
}
p++;
count++;
if(*p>n)p=num;
while(*p==0){p++;if(*p>n)p=num;}
}
p = num;
while(*p == 0)
p++;
printf("Last No is: %d\n", *p);
}
2019-12-23 12:25
komorebi0110
Rank: 2
来 自:上海
等 级:论坛游民
帖 子:145
专家分:17
注 册:2019-11-23
得分:0 
谢谢大家

我想要两颗西柚。
2019-12-23 13:16



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




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

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