题解 1047: [编程入门]报数问题

来看看其他人写的题解吧!要先自己动手做才会有提高哦! 
返回题目 | 我来写题解

筛选

用函数加递归

摘要:解题思路:注意事项:参考代码:#include <stdio.h>int main(){    int n;    scanf("%d",&n);    printf("%d",f(n));    r……

[编程入门]报数问题

解题思路:题目要我们遇到三就让他退出,那我们不妨定义一个数组,让其中n个数都等于1,然后我们便让他们按顺序相加,当加起来等于三=3时,我们就让当这个数组等于0,最后当数组的n个数加起来等于1时,就只有当前这个数等于1了,我们把他的位置输出出来就是他的号码了。

[编程入门]报数问题

摘要:解题思路:寻找规律,F(i)=(F(i-1)+M)%i,然后最后的人的编号就是F(i)+1,使用递归注意事项:参考代码:#include<stdio.h>int main(){ int n; scan……

1047:[编程入门]报数问题

摘要:解题思路:  退出的人,让他的编号变成0就好啦!为了让循环一直跑下去,需要取i和n的余数注意事项:本题涉及判断条件较多且严格,保持头脑清晰,可以在每次循环中打印一遍数组,以检验代码参考代码:#incl……

双向循环链表解决

解题思路:建立双向循环链表,每个结点保存一个人的序号,当被点到时删除结点并重新连接左右两个结点,直到剩下最后一个结点为止。注意事项:算法的时间复杂度和空间复杂度很高,很容易超过时间限制。参考代码:#includeusingnamespacestd;typedefstructLnod

报数问题-题解

摘要:解题思路:这是著名的约瑟夫杀人问题,有n个人,报数为3的人将会被杀死并从被杀死的人的下一个人重新开始报数,最后只留下一个人。              所以我们可以定义一个数组,为了方便,可以将a[0……