/ * タイトル: ヨセフスの問題。 アイデア: 使用のリストは、リストの最後には、それが最初に指していることを、時期を決定するために実装注意を払うをリスト 各サイクルは一つだけの数になるまで、番号を削除します。 * / の#include <iostreamの> する#include <リスト> 使用して名前空間STD; INT LastRemaining(N-unsigned int型、unsigned int型のM){ IF(N <M 1 || <1。)リターン-1; リスト<整数>番号; のため(INT I = 0、I <N - 、I ++){ numbers.push_back(I); } リスト<整数> :: =イテレータ電流()numbers.begin、 しばらく(numbers.size()> 1){ (INT用1 = I; I <M、I ++){ 現在++; IF(現在numbers.end ==()){ 電流= numbers.begin(); } } リスト<整数> ::イテレータの次= ++現在; IF(次== numbers.end()){ 次= numbers.begin()。 } --current。 numbers.erase(現在) 現在=次回。 } *現在返します。 } int型のmain(){ COUT << LastRemaining(5,3)。 }