pku3750约瑟夫环问题

原创 2011年01月22日 11:10:00

【题意】

有N个小孩围成一圈,给他们从1开始依次编号,现指定从第W个开始报数,报到第S个时,该小孩出列,然后从下一个小孩开始报数,仍是报到S个出列,如此重复下去,直到所有的小孩都出列(总人数不足S个时将循环报数),求小孩出列的顺序。
 
【分析】
简单的约瑟夫环问题,直接模拟即可,题目数据量很小;
 
【代码】
/*3750 Accepted 172K 0MS C++ 649B 2011-01-22 11:07:31*/
#include<stdio.h>
char name[65][18];
bool out[65];
int main()
{
    int i,idx,N,w,s,count;
    while(scanf("%d",&N)!=EOF)
    {
        for(i=1;i<=N;i++)scanf("%s",name[i]);
        scanf("%d,%d",&w,&s);
        for(i=0;i<65;i++) out[i]=0;
        idx=1, count=0;
        while(1){
            if(w>N) w%=N;
            if(out[w]==1) { w++; continue; }
            if(idx==s){
                puts(name[w]);
                out[w]=1,idx=0;
                count++;
            }   
            w++, idx++;
            if(count==N) break;
        }   
    }
}       
 

POJ3750_小孩报数问题【约瑟夫环】【string】【list】

题目大意:题意很明确,就是约瑟夫环。不过从第W个位置开始计数1,数S个 位置,然后出环,输出。 思路:用STL里边的string存放小孩的名字。用list双向链表模拟约瑟夫环。 注意: string里...

经典模拟问题--约瑟夫环 POJ--3750

经典模拟问题--约瑟夫环 POJ--3750

pku1012==hdu1443约瑟夫环问题

pku1012我写了个链表的暴力来直接打表发现只能打到k=9,到10就运行不了了;代码在下面,而网上这一篇http://blog.csdn.net/rongyongfeikai2/archive/20...

POJ3750 循环链表解决约瑟夫问题

题意: 就是约瑟夫斯问题,首先从一个人开始,越过k-2个人(因为第一个人已经被越过),第k个人出列。接着,再越过k-1个人,第k个人出列。这个过程沿着圆圈一直进行,直到最终只剩下一个人留下。依次输出...

poj 3750 约瑟夫环 + 双循环链表

题目链接 点击打开链接 小孩报数问题 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions:...

POJ 3750 小孩报数问题(约瑟夫问题 水题 考验细节、编码能力)

据说著名犹太历史学家 Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,4...

POJ 3750,小孩报数问题,模拟约瑟夫问题

这就是一个约瑟夫问题,前面我写过这样约瑟夫的程序,在这里我只简单的提提。 如何用一维数组来完成一个绕成圆圈的问题呢,首先就是要定义的空间比较大的一维数组,数到第S个就出列的话,那么在数到之前的那些孩子...

poj3750(模拟+约瑟夫环)

小孩报数问题 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8938   Accepted: 4196 ...

pku3517(约瑟夫环)

And Then There Was One Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: ...

约瑟夫环问题

  • 2016年07月05日 01:41
  • 771B
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:pku3750约瑟夫环问题
举报原因:
原因补充:

(最多只允许输入30个字)