【公海710登录网址】约瑟夫有计策地抽到了最终意气风发签

1.率先,大家先来打探一下哪些是Joseph环难题:

讲三个相比较有趣的传说:Joseph是犹太军队的二个战将,在反抗休斯敦的首义中,他所带领的部队被克制,只剩余残存的部队40余名,他们都以钢铁的人,所以不愿投降做叛徒。一批人决定说要死,所以用风华正茂种政策来先后杀死全数人。 
于是乎Joseph建议:每一次由别的两个人联合杀掉一人,而被杀的人的前后相继顺序是由抽签决定的,Joseph有机关地抽到了最终后生可畏签,在杀了除了她和多余那家伙之外的尾声一位,他劝服了其它三个没死的人投降了奥克兰。

 

浅显的话正是:

固守如下准绳去杀人:

  • 全部人围成大器晚成圈
  • 顺时针报数,每一回报到3的人将被杀掉
  • 被杀掉的人将从房间内被移走
  • 接下来从被杀掉的下一人另行报数,继续报3,再排除,直到剩余一位

www.710.com公海710登录网址 ,【公海710登录网址】约瑟夫有计策地抽到了最终意气风发签。那么程序落成为:

  链表的定义: 定义为编号就能够 所以data项为int

  

typedef struct NODE{
    struct NODE *next;
    int data;
}Node,*Linklist;

 

出于是循环,直到最终一位, 全体能够采纳特别的链表: 循环链表。
当链表中只剩下二个成分后,便以为完事了。 即 L->next = L;

#include <stdio.h>
#include <stdlib.h>
#include "Linklist.h"

void Print_Linklist(Linklist L)
{
    Linklist head = L;
    printf("List: ");
    while(L->next != head)
    {
        printf("%d ",L->data);
        L = L->next;
    }
    printf("%d ",L->data);
    printf("n");
}

int main()
{
    int i;
    Linklist L;
    Linklist head;
    Linklist Out;
    L = (Node*)malloc(sizeof(Node));
    head = L;
    L->data = 1;
    L->next = head;
    for(i=2;i<=41;i++)
    {
        L->next=(Node*)malloc(sizeof(Node));
        L->next->data = i;
        L->next->next = head;
        L = L->next;
    }
    Print_Linklist(head);
    L = head;
    while(L != L->next)
    {
         for(i=1;i<2;i++)
         {
             L = L->next;
         }
         Out = L->next;
         printf("%2d号 ----> 自杀!n",Out->data);
         L ->next = Out->next;
         L = L->next;
         free(Out);
    }
    printf("幸存者是:%d",L->data);
    return 0;
}

www.710.com 1

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图