約瑟夫問題的Python和C++求解方法
么是約瑟夫問題?
約瑟夫問題是一個(gè)有趣的數(shù)學(xué)游戲,游戲規(guī)則如下:
1、N個(gè)人圍成一個(gè)圈,編號(hào)從1開始,依次到N。
2、編號(hào)為M的游戲參與者開始報(bào)數(shù),報(bào)數(shù)從1開始,后面的人報(bào)數(shù)接龍,直到K為止,報(bào)數(shù)為K的人將出局。
3、出局者的下一個(gè)玩家接著從1開始報(bào)數(shù),如此循環(huán),直到剩下一個(gè)玩家時(shí)游戲結(jié)束,這個(gè)玩家就是游戲獲勝者。
那么問題來了,哪個(gè)編號(hào)是游戲獲勝者呢?
下面通過簡(jiǎn)單的幾行python代碼來解決這個(gè)問題:
#!/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)報(bào)數(shù)out一個(gè)編號(hào),最后剩下的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)從控制臺(tái)輸入人數(shù)N,C并將剔除出隊(duì)列的人員編號(hào)按順序輸出到控制臺(tái)上。
- C++循環(huán)鏈表之約瑟夫環(huán)的實(shí)現(xiàn)方法
- C++ 約瑟夫環(huán)的實(shí)例代碼
- C++ 中循環(huán)鏈表和約瑟夫環(huán)
- C++ 中約瑟夫環(huán)替換計(jì)數(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ì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2022-09-09Python?Pexpect庫自動(dòng)化交互式進(jìn)程控制的expect_list方法解析
Pexpect是一個(gè)Python庫,為自動(dòng)化和交互式進(jìn)程控制提供了豐富的功能,而expect_list方法是其功能強(qiáng)大且靈活的一部分,將詳細(xì)探討如何使用這一方法,并提供多個(gè)示例來說明其應(yīng)用場(chǎng)景和功能2024-01-01python調(diào)用百度AI接口實(shí)現(xiàn)人流量統(tǒng)計(jì)
這篇文章主要介紹了python調(diào)用百度AI接口實(shí)現(xiàn)人流量統(tǒng)計(jì),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02python類和函數(shù)中使用靜態(tài)變量的方法
這篇文章主要介紹了python類和函數(shù)中使用靜態(tài)變量的方法,實(shí)例分析了三種常用的實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-05-05