从面向结构到面向对象-----josephus问题(方法一:数组的应用)

王朝other·作者佚名  2006-01-09
宽屏版  字体: |||超大  

今天看了一下josephus问题,突然有点想写些东西的冲动,结合自己的部份思想,于是便写了这几篇帖子。因为有几篇代码有点长,就分开发吧。如果对你有什么帮助的话,本人胜感欣慰。也许你会说,这个问题好多书上都有代码,但本人诣在于用不同的方法写出,让初学者体会一下从面向结构到面向对象的不同之处;同时你也可以看看我写的和一些书中的不同之处。如果你是个大虾,大可一笑了之,或赐教一番。

josephus问题:几个小孩围成一圈,从任意一个小孩间隔m顺时针方向数起,每数到第m个小孩时,该小孩就离开。最后一个剩下的就为胜利者。第几个为胜利者?

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

//方法一:数组的应用

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

#include <iostream.h>

void main()

{

int num,interval,*array;

cout<<"please input the number of chirlder:";

cin>>num;

if((array=new int[num])==NULL)

{

cout<<"Can't allocate more memory,termination";

exit(1);

}

for(int i=0;i<num;i++)

array[i]=i+1;

cout<<"Please input the interval:";

while(1)

{

cin>>interval;

if(interval<=num&&interval>0)

break;

}

for(int i=0;i<num;i++)

cout<<array[i]<<" ";

cout<<endl;

int k=1;

int i;

cout<<"which number do you want to start count?";

cin>>i;

i-=2;

while(1)

{

for(int j=0;j<interval;)

{

i=(i+1)%num;

if(array[i]!=0)

j++;

}

if(k==num)break;

cout<<array[i]<<",";

array[i]=0;

k++;

}

cout<<endl

<<"No"<<array[i]<<"boy's won"

<<endl;

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有