Josephus问题
#include"iostream.h"
class Josephus
{
public:
Josephus();
void show(int m);
~Josephus();
public:
int a,b,size;
char* p[10][3];
};
Josephus::Josephus()//构造函数
{ size=10;
cout<<"请输入小孩的姓名:"<<endl;
for(a=0;a<size;a++)
for(b=0;b<3;b++)
cin>>p[a][b];
}
void Josephus::show(int m)
{
while(size>0)
{
if(m==size)//输入的数与size相等
size--;
else if(m<size)//输入的数比size小
{for(a=m-1;a<size-m;a++)
for(b=0;b<3;b++)
p[a][b]=p[a+1][b];
size--;
}
else
{for(a=size-m-1;a<size;a++)
for(b=0;b<3;b++)
p[a][b]=p[a+1][b];
size--;
}
}
cout<<"胜利者是:";
for(a=0;a<0;a++)
for(b=0;b<3;b++)
cout<<p[a][b];
}
Josephus::~Josephus()
{
cout<<"析构!";
}
void main()
{
Josephus x;
int m;
cout<<endl<<"请输入一个数:";
cin>>m;
x.show(m);
}
运行的时候输入数据,才输入第一个数据就显示:
"Ox00401dee"指令引用的"Oxcccccccc"内存。该内存不能为"written"。
要终止程序才行,这是为什么,哪里错了,怎么改??