约瑟夫问题 c语言

[复制链接]
查看11 | 回复2 | 2011-5-5 11:33:50 | 显示全部楼层 |阅读模式
#includestdio.h
intmain()
{
        intn,i,j,t;
        inta[150]={0};
        scanf(\"%d%d\",
        for(i=0;in;i)
        a=i1;
        i=0;
        while(n!=0)
        {
        i=it-1;
        for(j=i%n;jn-1;j)
        a[j]=a[j1];
        i=i%n;
        n--;
        }
        printf(\"%d\\n\",a[0]);
        return0;
}这个程序是什么意思啊
回复

使用道具 举报

千问 | 2011-5-5 11:33:50 | 显示全部楼层
约瑟夫问题
这是17世纪的法国数学家加斯帕在《数目的游戏问题》中讲的一个故事:15个教徒和15个非教徒在深海上遇险,必须将一半的人投入海中,其余的人才能幸免于难,于是想了一个办法:30个人围成一圆圈,从第一个人开始依次报数,每数到第九个人就将他扔入大海,如此循环进行直到仅余15个人为止。问怎样排法,才能使每次投入大海的都是非教徒









<h4class=\"ask\">追问


i=it-1;i=i%n;不懂这两个语句的意思
回复

使用道具 举报

千问 | 2011-5-5 11:33:50 | 显示全部楼层
n是人数,t是数到第几个人
i是当前的人
所以it-1就是下一个被扔下海的人
i%n就是查数查了几圈循环回来的数
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行