約瑟夫環問題:已知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個猶太人決定寧願死也...