找回密码
 快速注册
搜索
查看: 53|回复: 0

约瑟夫生者死者小游戏

[复制链接]

3149

主题

8386

回帖

6万

积分

$\style{scale:11;fill:#eff}꩜$

积分
65391
QQ

显示全部楼层

hbghlyj 发表于 2022-8-28 21:44 |阅读模式
应该是原来有一个帖子, 我还回过帖, 原帖找不到了 (因为音译名不同,没法搜到, 唉. 建议保留原英文名, 不要音译.)
runoob.com/cprogramming/c-examples-joseph-life-dead-game.html

30 个人在一条船上,超载,需要 15 人下船。

于是人们排成一队,排队的位置即为他们的编号。

报数,从 1 开始,数到 9 的人下船。

如此循环,直到船上仅剩 15 人为止,问都有哪些编号的人下船了呢?

  1. #include<stdio.h>
  2. int main(){
  3.     int count=0,//记录下船的人数 ,到15就终止程序
  4.     a[30]={0},//储存30人信息,0代表在船上,1代表下船了
  5.     i=0,//循环索引
  6.     c=0;// 记录报数号码,到9就清零,由下一位重新报数
  7.     while(1) {
  8.         if(a[i]==0)c++;//记录报数号码
  9.         if(c==9){
  10.             count++;//下船人数加一
  11.             a[i]=1; //标记这个人下船了
  12.             printf("第%d号下船了。\n",i+1);
  13.             c=0;//到9就清零,由下一位从0重新报数
  14.         }
  15.         if(count==15)break;//下船的人数到15就终止程序
  16.         i++;//分析下一个人
  17.         if(i==30)i=0; //将数组变成一个圈,循环往复
  18.     }
  19.     return 0;
  20. }
复制代码

袁博  cdy***98@163.com
4年前 (2019-02-10)

手机版|悠闲数学娱乐论坛(第3版)

GMT+8, 2025-3-4 15:31

Powered by Discuz!

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