鱼C论坛

 找回密码
 立即注册
查看: 3456|回复: 2

出圈游戏。。怎样才能简单些??

[复制链接]
发表于 2011-5-13 13:36:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 soldier 于 2011-5-13 14:36 编辑
//************
//**出圈游戏**
//************
#include<stdio.h>
void main()
{
    int clhs(int a[],int n);

    int a[50],i,left,m;
    printf("请输入游戏人数(0至50人): ");
    scanf("%d",&m);

    while(m>50||m<0)
    {
         printf("\n请重新输入人数: ");
         scanf("%d",&m);
    }

    for(i=0;i<m;i++)
        a[i]=i+1;

    left=clhs(a,m);

    printf("\n最后一个出圈的是:  %d\n\n",left);
}

int clhs(int a[],int n)
{
    int *p=a,temp=0;
    while (1)
    {
        if(p==a+n) p=a;

        temp++;
        if(temp==3)
        {            
            temp=0;
            n--;           
            while(p<a+n)    //数到3的时,用下一下数字代替本数
            {
                *p++=*(p+1);
                temp++;
            }
            p=p-temp-1;
            temp=0;
        }
        if(n==1) break;
        p++;
    } 
    return *p;            
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-5-13 13:49:30 | 显示全部楼层
本帖最后由 soldier 于 2011-5-13 14:36 编辑
// Joseph's Problem
// input: n,m                -- the number of persons, the inteval between persons
// output:                -- return the reference of last person

int josephus0(int n, int m)
{
        if (n == 2) return (m%2) ? 2 : 1;
        int v = (m+josephus0(n-1,m)) % n;
        if (v == 0) v = n;
        return v;
}
int josephus(int n, int m)
{
        if (m == 1) return n;
        if (n == 1) return 1;
        if (m >=n) return josephus0(n,m);
        int l = (n/m)*m;
        int j = josephus(n - (n/m), m);
        if (j <= n-l) return l+j;
        j -= n-l;
        int t = (j/(m-1))*m;
        if ((j % (m-1)) == 0) return t-1;
        return t + (j % (m-1));
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-5-13 14:24:34 | 显示全部楼层
回复 仰望天上的光 的帖子

谢谢大虾,学艺不精看不太懂,我会好好研究研究的,谢谢:loveliness:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-19 09:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表