約瑟夫問題 2011 04 08

2021-05-25 00:07:45 字數 1328 閱讀 5210

約瑟夫環問題:已知n個人(以編號1,2,3...n分別表示)圍坐在一張圓桌周圍。從編號為1的人開始報數,數到m的那個人出列;他的下乙個人又從1開始報數,數到m的那個人又出列;依此規律重複下去,直到圓桌周圍的人全部出列。

下例實現是:n=50, m=3

#include

#define nmax 50

int main()

int k,m,num[nmax],*p;

printf("please input the total of numbers:");

p = num;

for (int i=0; i*(p+i) = i + 1;

k = 0; 

m = 0;

int h = 0;

while (m < nmax-1)

if (*(p+h) != 0)

k++;

if (k == 3)

*(p+h) = 0;

k=0;

m++;

h++;

if (h == nmax)

h = 0;

while (*p == 0)

p++;

printf("%d is left/n", *p);

return 0;

這個是陣列的實現方式,其實還是指標的作用。

#include

#include

#define n 50

#define m 3

typedef struct node *link;

struct node

int item;

link next;

link node(int item, link next)

link t = (link)malloc(sizeof(*t));

t->item = item;

t->next = next;

return t;

int main()

link t = node(1, null);

t->next = t;

for (int i=2; i<=n; i++)

t->next = node(i, t->next);

t = t->next;

while (t != t->next)

for (int i=1; it = t->next;

t->next = t->next->next;

printf("%d/n", t->item);

return 0;

這個是見乙個迴圈鍊錶。方式不同,但是我覺得 執行的思路還是一樣的。

輸出都是:11

2011 04 08 驅動的寫法

先規定驅動介面檔案的特定格式 drv c dev c drv i.h 1.drv i.h是對外介面.2 drv c裡面都是以下面的函式介面 開放在magic.c裡面 drv dtos minit,drv dtos mexit,drv dtos mopen,drv dtos mclose,drv dt...

約瑟夫問題 約瑟夫環

約瑟夫 問題 有時也稱為約瑟夫斯置換,是乙個出現在電腦科學和數學中的問題。在計算機程式設計的演算法中,類似問題又稱為約瑟夫環。又稱 丟手絹問題 據說著名猶太歷史學家 josephus有過以下的故事 在羅馬人占領喬塔帕特後,39 個猶太人與josephus及他的朋友躲到乙個洞中,39個猶太人決定寧願死...

約瑟夫問題 約瑟夫環

約瑟夫問題 有時也稱為約瑟夫斯置換,是乙個出現在電腦科學和數學中的問題。在計算機程式設計的演算法中,類似問題又稱為約瑟夫環。又稱 丟手絹問題 據說著名猶太歷史學家 josephus有過以下的故事 在羅馬人占領喬塔帕特後,39 個猶太人與josephus及他的朋友躲到乙個洞中,39個猶太人決定寧願死也...