黑马程序员技术交流社区
标题:
约瑟夫环
[打印本页]
作者:
万里天
时间:
2015-2-24 08:56
标题:
约瑟夫环
本帖最后由 万里天 于 2015-2-24 09:02 编辑
约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。通常解决这类问题时我们把编号从0~n-1,最后结果+1即为原问题的解。
int str[13] = {1,2,3,4,5,6,7,8,9,10,11,12,13};
int number = 13,count = 0,i =0;
while (number > 1) { //number 表示人数
if (str
!= 0) {
count++;
}
if (count == 3) {//如果count的值为3,则表示报到的数为"3"
str
= 0; //此时将此人的值赋值为0,表示此人已经排除
count = 0;//count重新赋值为0
number--;//人数减1
}
i++;
if (i ==13) {//由于是围成一圈,当值等于13时,强制将其设置为0
i = 0;
}
}
printf("出卖耶稣叛徒的序号为:");
for (int i = 0; i< 13; i ++) {
if (str
> 0) {
printf("%d ",str
);
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2