理解C程序设计中的抽象理论
2020-06-15 00:07 来源:莱西养生网
josephus问题是c++中的一个经典题目,在正式开始学习之前我们先回顾一下如何利用数组和结构体来解决josephus问题,最后我们再看一下如何利用面向对象的抽象理念进行解决此问题的程序设计,相互对比,找出效率最高,最容易理解,最方便维护的程序来,说明利用面向对象的抽象理念进行程序设计的好处。
josephus问题其实就是一个游戏,一群小孩围成一个圈,设置一个数,这个数是个小于小孩总数大于0的一个整数,从第一个小孩开始报数,当其中一个小孩报到你设置的那个数的时候离开那个圈,这样一来反复报下去,直到只剩下最后一个小孩的时候那个小孩就是胜利者,写程序来找出这个小孩。
以下是数组方法:
由于数组的限制我们必须预先假设好有多少个小孩,离开的小孩他自身设置为0来标记离开状态。
代码如下:
C++ 代码
//程序作者:管宁
//所有稿件均有版权,如要转载,请务必著名出处和作者
#includeiostream
usingnamespacestd;
voidmain()
{
constintnum=10;
intinterval;
inta[num];
for(inti=0;inum;i++)
{
a[i]=i+1;
}
cout"pleaseinputtheinterval:";
cininterval;
for(inti=0;inum;i++)
{
couta[i]",";
}
coutendl;
intk=1;
intp=-1;
while(1)
{
for(intj=0;jinterval;)
{
p=(p+1)%num;
if(a[p]!=0)
{
j++;
}
}
if(k==num)
{
break;
}
couta[p]"我们的见解也是可以分享的,";
a[p]=0;
k++;
}
cout"\nNo增长57%。完成社会消费品零售总额4.47亿元."a[p]"boy'vewon.\n";
t();
t();
}
就数组解决来看,程序简短但效率不高可读性也不好,此代码没有什么特别之处主要依靠一个加1取模的方式来回到首位置,形成环链:p=(p+1)%num;。查看本文来源
昭通白癜风治疗费用崇左好的白癜风医院白带异常是有什么病吗- 上一篇:封神召唤师如何分解神将分解神将方法详解
- 下一篇:双港格林社区开展社区垃圾大清整活动
-
大白熊犬嘴巴红肿肚皮发红是怎么了位置
前天发现豆豆的肚皮和生殖器发红,从昨天晚上开始发现它的嘴巴红肿了,肚皮还是很红,就早上吃了半根火腿肠,不爱出去玩了.今天早上,豆豆的嘴肿的更严重了,甚至有点要流脓的意思了,还是吃了半根火腿肠,睡睡觉就...
-
大白熊犬听不听话训练大白熊犬听话的方法位置
大白熊犬听不听话,狗狗它们也有它们自己的思想和本能,它们不听话也是正常的,对于狗狗不听话很多人都比较头痛,其实狗狗的听话与否跟我们也是有一定的关系的。可以通过训练来让狗狗听你的。下面我们就...
-
大白熊犬吃零食好吗位置
大白熊犬是大型犬,体形优美,很受人们欢迎。大白熊犬的食物好说,可以吃专业狗粮,也可以自己给大白熊做吃的,只要注意一些禁忌类的食物就行,还有一种食物对大白熊犬有很大的诱惑力,那就是零食,到底...
-
大白熊犬召回训练行之有效的方法位置
在狗狗没有被我们驯服之前,它们一直长期生活在大自然中,也不和人类接触,更无法懂得人类的语言。当我们饲养了大白熊犬的时候,它就要和我们长久的生活在一起,也要学会人类世界里的某些规则。大白熊犬...
-
大白熊犬发情不喜欢吃饭怎么办位置
大白熊犬发情这是第一次有10天了。这几天不爱吃食。风舞雪:非常正常,人恋爱的时候也有一种表现叫“食不知味”,何况是大白熊犬;让它远离异性,它平时喜欢的游戏多陪它玩,像扔球什么的;转移它的视线...
-
大白熊犬为什么会有抽搐的现象位置
您好.我家的大白熊犬已经三岁了.最近才来的我家.来我家过程中发现她有抽搐的现象.每十天抽搐一次.一次两天.抽搐时间为30秒钟左右.口吐黏液.抽搐完后异常兴奋.我们小区宠物门诊确诊为癫痫.现在正在打针.吃药...