n
只猴子要選大王,選舉方法如下:所有猴子按1,
2 ……… n
編號並按照順序圍成一圈,從第
1個猴子起,由
1開始報數,報到
m時,該猴子就跳出圈外,下乙隻猴子再次由
1開始報數,如此迴圈,直到圈內剩下乙隻猴子時,這只猴子就是大王。
約瑟夫問題。#include#includeusing namespace std;
typedef struct snode
lnode;
void houzi(int n,int k)
p=head;
pre=head;
while(n!=1)
coutpre=pre->next;
pre->next=p->next;
s=p;
p=p->next;
free(s);
n--;
} cout<<"最後的結點為:"
解決方法:建立乙個有
n個節點,沒有頭結點的迴圈鍊錶,確定第乙個報數人的位置。不斷從鍊錶中刪除節點,直到鍊錶為空。
還需要搞定的:單鏈表反轉,對單鏈表遍歷一次求中間值。先記下。
鍊錶 PTA 猴子選大王
一群猴子要選新猴王。新猴王的選擇方法是 讓n只候選猴子圍成一圈,從某位置起順序編號為1 n號。每只猴子預先設定乙個數 或稱定數 用最後乙隻猴子的定數d,從第一只猴子開始報數,報到d的猴子即退出圈子 當某只猴子退出時,就用它的定數決定它後面的第幾隻猴子將在下次退出。如此不斷迴圈,最後剩下的乙隻猴子就選...
猴子選大王問題
猴子選大王 亞瑟夫換 的問題是資料結構和演算法中常見的一類問題。可以使用迴圈佇列實現,也可以使用鍊錶實現。還可以使用陣列的回溯法實現。m只猴子要選大王,選舉辦法如下 所有猴子按1,2 n編號圍成一圈,從第一號開始順序1,2 m,凡是報m號的退出圈外,如此迴圈報數直到圈內只剩乙隻猴子時這只猴子就是大王...
猴子選大王問題
創立乙個記錄編號的陣列,用指標在這個陣列迴圈移動計數,當計數為m時將這個元素做移除標記,直到剩下最後乙個元素。1 intmain 211 int p v 0 12 int z 0,x 1,co 1 z為剔除元素個數,x為元素在陣列中位置,co為計數 13for 1423 p 24 x 25 26if...