?? 用戶數組解決約瑟夫問題.txt
字號:
用數組解決約瑟夫問題的源程序
附件中是使用數組解決約瑟夫問題的源程序。希望大家好好研究一下。思考這樣幾個問題:
(1)為什么定義一個抽象類?
(2)函數NextPeople()為什么是私有的?
(3)函數NextPeople()中有沒有出現死循環的風險?
===================================================================
#include <iostream>
using namespace std;
class Joseph{
protected:
int number_of_people;
int step;
public:
virtual void CreateOutput()=0;
Joseph(int n,int m){
number_of_people=n;
step=m;
}
};
class JosephWithArray:public Joseph{
int *WorkingArray;
int NextPeople(int prev);
public:
JosephWithArray(int n,int m);
void CreateOutput();
~JosephWithArray(){delete[] WorkingArray;}
};
JosephWithArray::JosephWithArray(int n,int m):Joseph(n,m){
WorkingArray = new int[n];
for(int i=0;i<n;i++)
WorkingArray[i]=i+1;
}
void JosephWithArray::CreateOutput(){
int i;
int outnum=-1;
for(i=0;i<number_of_people;i++){
outnum = NextPeople(outnum);
cout << WorkingArray[outnum] << " ";
WorkingArray[outnum]=0;
}
cout << endl;
}
int JosephWithArray::NextPeople(int prev){
int count=0;
int travel=prev;
while(count<step){
travel=(travel+1)%number_of_people;
if(WorkingArray[travel])
count++;
}
return travel;
}
int main(){
int n,m;
cout << "please input number of people:";
cin >> n;
cout << "please input step:";
cin >> m;
JosephWithArray obj(n,m);
obj.CreateOutput();
getchar();
getchar();
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -