编程论坛's Archiver

东海骑鲸客 发表于 2008-4-20 15:53

请教一下~

21个人围成一圈,依次编号为1到21,从1号开始数,5的倍数离开,直到最后一人为止,设计程序计算剩下的人的编号?

sunkaidong 发表于 2008-4-20 15:56

你发到c里面吧...刚有人问过....

zhxhhyqj 发表于 2008-4-21 19:33

#include<iostream>
using namespace std;
int main()
{
        int i,j=0;
        int d[21];
       
        for(i=0;i<21;i++)
                d[i]=i+1;
       
       
        for(i=0;i<21;i++)
        {        if((i+1)%5==0)
                        j++;
                else
                { d[i-i/5]=d[i];}
        }
     cout<<"剩下的数是:";
       
         
         for(i=0;i<21-j;i++)
                        cout<<d[i]<<',';
                cout<<endl;
    return 0;

}

yellowfish 发表于 2008-4-21 22:34

回复 3# 的帖子

楼上的好象有点问题

sunkaidong 发表于 2008-4-21 22:37

没怎么注意...也不知道是不是把出队的都剃去了

aipb2007 发表于 2008-4-21 22:46

就这里也有很多啊,约瑟夫环问题。
一两句话就求解了,用数学。
当然最直观的还是循环数组。

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.