練習 圓桌問題

2022-06-29 12:27:08 字數 758 閱讀 5618

學會鍊錶的練手題:

題目描述

圓桌上圍坐著2n個人。其中n個人是好人,另外n個人是壞人。如果從第乙個人開始數數,數到第m個人,則立即處死該人;然後從被處死的人之後開始數數,再將數到的第m個人處死……依此方法不斷處死圍坐在圓桌上的人。試問預先應如何安排這些好人與壞人的座位,能使得在處死n個人之後,圓桌上圍坐的剩餘的n個人全是好人。

思路

迴圈雙鏈表來模擬圓桌順時針和逆時針

題解

#includeusing namespace std;

struct linknode;

void insertnode(linknode *p)

int main()

rear->next=head;

head->pre=rear;

// 在head後插入乙個'b',從這裡開始往後數m個,在最後乙個後面插入'b',總共執行n次插入

insertnode(head);

p=head->next;

for(int i=1;inext;

insertnode(p);

p=p->next;

}for(int j=1;jnext;

int t=0;

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

{coutp=p->pre;

++t;

if(t==50) {cout《沒有釋放記憶體,請勿效仿!

圓桌問題 a

時間限制 1 sec 記憶體限制 128 mb 提交狀態 題目描述 圓桌上圍坐著2n個人其中n個人是好人,另外n個人是壞人。如果從第乙個人開始數數數到第m個人,則立即處死該人,然後從被處死的人之後開始數數,再將數到的第m個人處死 依此方法不斷處死圍坐在圓桌上的人。試問預先應如何安排這些好人與壞人的座...

C 程式設計 圓桌問題

問題描述 圓桌上圍坐著2n個人。其中n個人是好人,另外n個人是壞人。如果從第m m 2n 個人開始數數,數到第k個人,則立即處死該人 然後從被處死的人之後重新開始數數,再將數到的第k個人處死 依此方法不斷處死圍坐在圓桌上的人。試問預先應如何安排這些好人與壞人的座位,能使得在處死n個人之後,圓桌上圍坐...

約瑟夫環問題 圓桌報數問題

約瑟夫環問題 一圈共有n個人,開始報數,報到m的人自殺,然後重新開始報數,問最後自殺的人是誰?如圖 內環表示人排列的環,外環表示自殺順序 上面n 41,m 3。最普通辦法就是模擬整個過程 建乙個bool陣列,true表示此人還活著,false表示已經自殺。可以模擬整個過程 cpp view plai...