編號為1,2······,n的n個人按順時針方向圍坐一圈,每人持有乙個密碼。一開始任選乙個正整數作為報數上限值m,從第乙個人開始順時針方向自1開始順序報數,報到m時停止報數。報m的人出列,將他的密碼作為新的m值,從他的順時針方向上的下乙個人開始重新從1報數,如此下去,直到所有人全部出列為止。試設計乙個程式求出出列順序。
測試資料: m的初值為20,n=7,七個人的密碼依次為3,1,7,2,4,8,4。則首先m值為6 ,正確的出列順序應該為6,1,4,7,2,3,5。
}temp2->next = head; //實現鍊錶的迴圈
}joseph::~joseph()
bool joseph::game()
cout << "出列人編號: " << temp1->number << endl;
temp = temp1; //temp指向將要出列的人
a = temp->password; //記錄密碼,用來刪除下乙個人
temp2->next = temp1->next;
temp1 = temp->next;
delete temp;
}cout << endl;
head = null; //最後乙個人出列後,將頭指標設為null(一定不要忘記)
return true; }
int main()
joseph test(n, m, first_m);
test.game();
return 0;
}
資料結構 C語言 約瑟夫問題
一 問題描述 約瑟夫問題 乙個旅行社要從n個旅客中選出一名旅客,為他提供免費的環球旅行服務。旅行社安排這些旅客圍成乙個圓圈,從帽子中取出一張紙條,用上面寫的正整數m作為報數值。遊戲進行時,從第s個人開始按順時針方向自1開始順序報數,報到m時停止報數,報m的人被淘汰出列,然後從他順時針方向上的下乙個人...
資料結構 約瑟夫問題
約瑟夫問題 上課結束,大家聽說第一周沒有程式設計題目,立刻就被鄙視了,為了糾正這個錯誤,咱們本週就來做點簡單題目。本題要求用迴圈鍊錶實現 約瑟夫問題是乙個經典的問題。已知n個人 不妨分別以編號1,2,3,n 代表 圍坐在一張圓桌周圍,從編號為 k 的人開始,從1開始順時針報數1,2,3,順時針數到m...
資料結構 約瑟夫問題
約瑟夫問題是乙個經典的問題。已知n個人 不妨分別以編號1,2,3,n 代表 圍坐在一張圓桌周圍,從編號為k 的人開始,從1開始順時針報數1,2,3,順時針數到m 的那個人,出列並輸出。然後從出列的下乙個人開始,從1開始繼續順時針報數,數到m的那個人,出列並輸出,依此重複下去,直到圓桌周圍的人全部出列...