博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
josephus问题
阅读量:4698 次
发布时间:2019-06-09

本文共 3384 字,大约阅读时间需要 11 分钟。

1 //===================================== 2 // f1102.cpp 3 // Josephus Problem Object-based Solving 4 //===================================== 5 #include"jose.h" 6 #include
7 using namespace std; 8 //------------------------------------- 9 int main(){10 cout<<"please input boyNum/interNum/startPos:\n";11 int n, m, s;12 cin>>n>>m>>s;13 Jose(n,m).getWinner();14 Jose(n,m,s).getWinner();15 system("pause");16 }//====================================17 18
View Code
1 //===================================== 2 // jose.cpp 3 //===================================== 4 #include"boyring.h" 5 #include"jose.h" 6 #include
7 using namespace std; 8 //------------------------------------- 9 Jose::Jose(int boys, int interval, int begin, int wins)10 :n(boys),m(interval),s(begin),w(wins){11 if(n<2 || m<1 || m>=n || s<0 || s>=n || w<1 || w>=n){12 cout<<"data error.\n";13 throw exception();14 }15 }//------------------------------------16 void Jose::getWinner()const{17 cout<<"\nThere are "<
<<" boys.\nBoys leaved in order:\n";18 BoyRing x(n);19 x.countBy(s-1);20 for(int i=1,numinLine=0; i
View Code
1 //===================================== 2 // jose.h 3 //===================================== 4 #ifndef HEADER_JOSE 5 #define HEADER_JOSE 6 class Jose{ 7   int n, s, m, w; 8 public: 9   Jose(int boys, int interval, int begin=1, int wins=1);10   void getWinner()const;11 };//===================================12 #endif  // HEADER_JOSE13 14
View Code
1 //===================================== 2 // boyring.h 3 //===================================== 4 #ifndef HEADER_BOYRING 5 #define HEADER_BOYRING 6 struct Boy{ 7   int code; 8   Boy* next; 9 };//-----------------------------------10 class BoyRing{11   Boy *pBegin, *pivot, *pCurrent;12 public:13   BoyRing(int n);14   void countBy(int m);15   int getNum() const;16   void disengage();17   void printAll()const;18  ~BoyRing();19 };//===================================20 #endif  // HEADER_BOYRING21 22
View Code
1 //===================================== 2 // boyring.cpp 3 //===================================== 4 #include"boyring.h" 5 #include
6 using namespace std; 7 //------------------------------------- 8 BoyRing::BoyRing(int n){ 9 if(n<2)10 throw exception();//抛出异常,是库函数11 pBegin = new Boy[n];12 for(int i=1; i<=n; i++){13 pBegin[i-1].next = &pBegin[i%n];14 pBegin[i-1].code = i;15 }16 pivot = pCurrent = &pBegin[n-1];17 }//------------------------------------18 void BoyRing::countBy(int m){19 for(int i=1; i<=m; ++i){20 pivot = pCurrent;21 pCurrent = pCurrent->next;22 }23 }//------------------------------------24 int BoyRing::getNum() const {25 return pCurrent->code;26 }//------------------------------------27 void BoyRing::disengage(){28 pivot->next = pCurrent->next;29 pCurrent = pivot;30 }//------------------------------------31 void BoyRing::printAll()const{32 int numinLine = 0;33 Boy* p = pCurrent;34 do{35 cout<<" "<
code;36 if(!(++numinLine%10)) 37 cout<<"\n";38 p = p->next;39 }while(p!=pCurrent);40 cout<<"\n";41 }//------------------------------------42 BoyRing::~BoyRing(){43 delete[] pBegin;44 }//------------------------------------45 46
View Code

 

转载于:https://www.cnblogs.com/herizai/p/3144926.html

你可能感兴趣的文章
ubuntu内核版本管理
查看>>
WebBrowser keystroke
查看>>
CSS(七)定位
查看>>
prompt不生效之解决
查看>>
编译Sqoop2错误解决
查看>>
2.动手动脑
查看>>
CS100.1x Introduction to Big Data with Apache Spark
查看>>
MyBatis学习总结_Mybatis查询之resultMap和resultType区别
查看>>
provider and $provide.decorator
查看>>
如何使用WebUploader。
查看>>
在微信中调用ajax出现的问题
查看>>
文本区域的高度随着内容增加----插件
查看>>
d3d3
查看>>
CentOS7安装.NET Core运行环境
查看>>
TableAdapter和DataAdapter有何区别
查看>>
2008已经到来,我们怎能原地踏步!
查看>>
fedora 安装chrome
查看>>
【javascript】简单原型链、借用构造函数
查看>>
PHPCMS V9.6.0 SQL注入漏洞EXP
查看>>
【原创】大叔问题定位分享(11)Spark中对大表子查询加limit为什么会报Broadcast超时错误...
查看>>