qq_41525202 2020-03-18 15:53 采纳率: 0%
浏览 293

请问有人知道这题用C怎么解吗?

30 个人在一条船上,超载,需要 15 人下船。 于是人们排成一队,排队的位置即为他们的编号。 报数,从 1 开始,数到 9 的人下船。 如此循环,直到船上仅剩 15 人为止,问都有哪些编号的人下船了呢?

这是我的代码但是跑不出来
#include
#include
int count=0;
void digui(int a[]){
int i=1,j,k;
while(a[i]!='\0'){

    if(i%9==0){

        a[i]=a[i+1];
        count++;
        k=count;
        i++;
        printf("%d ",a[i]);

    }
    if(count%3==0){
        digui(a+1);
    }

    if(k==15)
    break;
}

}
int main()
{
int a[30];
int i;
for(i=1;i<=30;i++){
a[i]=i;
}
digui(a+1);
return 0;
}

  • 写回答

1条回答 默认 最新

  • Iambinary 2020-03-18 19:59
    关注

    约瑟夫环

    #include <stdio.h>
    typedef int Element;
    int que[1003], i, head = 0, tail = 0;
    void push(Element x) {
        que[++tail] = x;
    }
    void pop() {
        ++head;
    }
    Element front() {
        return que[head + 1];
    }
    Element rear() {
        return que[tail];
    }
    int size() {
        return tail - head;
    }
    int main()
    {
        for(i = 1; i <= 30; ++i)
            push(i);
        while(size() > 15) {
            for(i = 1; i < 9; ++i)
            {
                push(front());
                pop();
            }
            printf("%d ", front());//按弹出顺序输出 
            pop();
        }
        return 0;
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 有赏,i卡绘世画不出
  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题
  • ¥15 FPGA-SRIO初始化失败
  • ¥15 MapReduce实现倒排索引失败
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码