📄 ex7_10_1.h
字号:
#include<cassert>
using namespace std;
template <typename T>class seqlist{
T *elements; //存放顺序表的数组
int Maxsize; //最大可容纳项数
int last; //已存表项的最后位置
public:
seqlist(int ms=18);
~seqlist(){delete[] elements;}
int Josephus(int,int);
};
template<typename T> seqlist<T>::seqlist(int ms){
last=-1;
Maxsize=ms;
elements=new T[Maxsize];
assert(elements!=NULL); //断言:分配成功
}
template <typename T> int seqlist<T>::Josephus(int a,int m){ //a猴子总数,m报数终点
T * el;
int i,j,k,l;
if(a>Maxsize){
el=elements;
Maxsize=a;
elements=new T [Maxsize]; //建立栈空间
assert(elements!=0); //分配不成功结束程序
delete [] el;
}
for(i=0;i<a;i++){
elements[i]=1; //赋初值,1 表示该猴子在位
last++;
}
i=-1,j=0,k=last;
while(k!=0){
while(j<m){
i=(i+1)%(last+1);
if(elements[i]==1) j++;//该位置上有猴子才计数
}
elements[i]=0; //0表示该猴子出局
j=0;
k--; //倒计数
for(l=0;l<=last;l++) cout<<elements[l]<<'\t';
cout<<endl;
}
for(i=0;i<=last;i++){
if(elements[i]==1) break;
}
return i;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -