約瑟夫問題的Python和C++求解方法
么是約瑟夫問題?
約瑟夫問題是一個有趣的數(shù)學(xué)游戲,游戲規(guī)則如下:
1、N個人圍成一個圈,編號從1開始,依次到N。
2、編號為M的游戲參與者開始報數(shù),報數(shù)從1開始,后面的人報數(shù)接龍,直到K為止,報數(shù)為K的人將出局。
3、出局者的下一個玩家接著從1開始報數(shù),如此循環(huán),直到剩下一個玩家時游戲結(jié)束,這個玩家就是游戲獲勝者。
那么問題來了,哪個編號是游戲獲勝者呢?
下面通過簡單的幾行python代碼來解決這個問題:
#!/usr/bin/env python # Joseph Problem def joseph(total, begins, count): queue = range(1, total + 1) death = (begins + count - 2) % len(queue) for times in range(total - 1): print 'out: ', queue[death] del queue[death] death = (death + count -1) % len(queue) print 'survivor: ', queue[0]
joseph()函數(shù)中,參數(shù)total即上面提到的N,begins即M,count及K,每次循環(huán)報數(shù)out一個編號,最后剩下的survivor便是游戲獲勝者。
而C++的通常實(shí)現(xiàn)方法如下:
#include <iostream> using namespace std; void main() { int N=0,C=0; cout<<"Please enter the number of people:N="; cin>>N; cout<<"Please enter:C="; cin>>C; int i=0,j=0,n=N,s=0; int *a=new int [N]; for (i=0;i<N;i++) { a[i]=1; } while(0!=n) { s+=a[j]; if(C==s) { a[j]=0; s=0; --n; if(0!=n) { cout<<j+1<<"->"; } else { cout<<j+1<<endl; } } j=(j+1)%N; } delete []a; }
這是C++語言常見的機(jī)試題目,以下程序?qū)崿F(xiàn)從控制臺輸入人數(shù)N,C并將剔除出隊列的人員編號按順序輸出到控制臺上。
- C++循環(huán)鏈表之約瑟夫環(huán)的實(shí)現(xiàn)方法
- C++ 約瑟夫環(huán)的實(shí)例代碼
- C++ 中循環(huán)鏈表和約瑟夫環(huán)
- C++ 中約瑟夫環(huán)替換計數(shù)器m(數(shù)組解決)
- 詳解基于C++實(shí)現(xiàn)約瑟夫環(huán)問題的三種解法
- 詳解約瑟夫環(huán)問題及其相關(guān)的C語言算法實(shí)現(xiàn)
- 約瑟夫環(huán)問題(數(shù)組法)c語言實(shí)現(xiàn)
- C語言基于循環(huán)鏈表解決約瑟夫環(huán)問題的方法示例
- C語言約瑟夫環(huán)的實(shí)現(xiàn)
- C/C++經(jīng)典算法之約瑟夫問題詳解
相關(guān)文章
解決Python 函數(shù)聲明先后順序出現(xiàn)的問題
這篇文章主要介紹了如何解決Python 函數(shù)聲明先后順序的問題,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下2020-09-09Python Multinomial Naive Bayes多項(xiàng)貝葉斯模型實(shí)現(xiàn)原理介紹
這篇文章主要介紹了Python Multinomial Naive Bayes多項(xiàng)貝葉斯模型實(shí)現(xiàn)原理,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2022-09-09Python?Pexpect庫自動化交互式進(jìn)程控制的expect_list方法解析
Pexpect是一個Python庫,為自動化和交互式進(jìn)程控制提供了豐富的功能,而expect_list方法是其功能強(qiáng)大且靈活的一部分,將詳細(xì)探討如何使用這一方法,并提供多個示例來說明其應(yīng)用場景和功能2024-01-01python調(diào)用百度AI接口實(shí)現(xiàn)人流量統(tǒng)計
這篇文章主要介紹了python調(diào)用百度AI接口實(shí)現(xiàn)人流量統(tǒng)計,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-02-02python類和函數(shù)中使用靜態(tài)變量的方法
這篇文章主要介紹了python類和函數(shù)中使用靜態(tài)變量的方法,實(shí)例分析了三種常用的實(shí)現(xiàn)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-05-05