歡迎使用CSDN markdown編輯器

2021-08-03 18:46:43 字數 1015 閱讀 1813

josephu問題(丟手帕問題)

josephu問題為:設編號為1,2,...n的n個人圍坐一圈,約定編號為k(1<=k<=n)的人從1開始報數,數到m的那個人出列,它的下一位又從1開始報數,數到m的那個人又出列,依次類推,直到所有人出列為止,由此產生乙個出隊編號的序列。
程式入口類
public

class diushoujuan

}

對玩遊戲的人賦予編號

class people

}

//環形鍊錶

class lianbiao

public

void

setm(int m)

public

void

setk(int k)

public

void

play()

temp2.nextpeople=temp.nextpeople;

temp=temp.nextpeople;

len--;

}system.out.print("最後乙個:"+temp.num);

}//建立鍊錶

public

void

createliaobiao()elseelse}}

}public

void

show()while(temp!=this.firstpeople);

}}

思路

用乙個不帶頭結點的迴圈鍊錶來處理josephu問題:先構成乙個有n個結點的單迴圈鍊錶,然後由k結點起從1開始計數,計到m時,對應結點的人從鍊錶中刪除,然後再從被刪除結點的下乙個結點又從1開始計數,直到最後乙個結點從鍊錶中刪除演算法結束。

鍊錶的建立在這裡還是挺重要的,上述**中的鍊錶是單向的,所以第乙個位置和最後乙個位置的,比較重要,而且指向第乙個小孩的引用,不能動。

if(i==1)
嗯就是這樣=-=

歡迎使用CSDN markdow

本markdown編輯器使用stackedit修改而來,用它寫部落格,將會帶來全新的體驗哦 markdown 是一種輕量級標記語言,它允許人們使用易讀易寫的純文字格式編寫文件,然後轉換成格式豐富的html頁面。維基百科 使用簡單的符號標識不同的標題,將某些文字標記為粗體或者斜體,建立乙個鏈結等,詳細...

歡迎毛毛與妞妞使用CSDN markdown編輯器

建立乙個自定義列表 如何建立乙個註腳 注釋也是必不可少的 katex數學公式 新的甘特圖功能,豐富你的文章 uml 圖表 flowchart流程圖 匯出與匯入 你好!這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如何使用markdown編輯器,可以仔細閱讀這篇文章,了解一下mar...

歡迎使用CSDN markdow1n編輯器

本markdown編輯器使用stackedit修改而來,用它寫部落格,將會帶來全新的體驗哦 markdown 是一種輕量級標記語言,它允許人們使用易讀易寫的純文字格式編寫文件,然後轉換成格式豐富的html頁面。維基百科 使用簡單的符號標識不同的標題,將某些文字標記為粗體或者斜體,建立乙個鏈結等,詳細...