约瑟夫算法:n个人围成一圈,每人有一个各不相同的编号,选择一个人作一个

来源:百度知道 编辑:UC知道 时间:2024/09/21 06:53:24
约瑟夫算法:n个人围成一圈,每人有一个各不相同的编号,选择一个人作为起点,然后顺时针从1到k数数,每数到k的人退出圈子,圈子缩小,然后从下一个人继续从1到k数数,重复上面过程。求最后推出圈子的那个人原来的编号。

自已找到了,在钱能的书里的! ̄

//***************************
//** Josephus问题解法1 **
//** jose1.cpp **
//***************************

#include <iostream.h>

void main()
{
//建立小孩数组
const int num=10; //小孩数
int interval; //每次数interval个小孩,便让该小孩离开
int a[num]; //小孩数组
//给小孩编号
for(int i=0; i<num; i++) //小孩的编号只与小孩数有关
a[i]=i+1;
//输入数小孩间隔
cout <<"please input the interval: "; //输入一个数小孩个数
cin >>interval;
//将全体参加的小孩输出
for(int i=0; i<num; i++) //顺序输出开始时的小孩编号
cout <<a[i] <<",";
cout <<endl;

有n个人围成一圈,顺序排号。 n个人围成一圈和排成一列的排列方法分别怎么计算? 20. n个人围成一圈,1,2,3循环报数,报到3的人退出 有 N 个人围成一圈参加游戏,游戏的规则是: N个人围成一圈,甲乙之间巧有R个人的概率是多少,只考虑甲到乙顺时钟方向. 2:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子, 输入n个正整数(代表n个人),围成一圈,按1,2,3报数,报到3的人跳出。问最后一个留在圈中的人是谁 n个人围成一圈,从第m个人开始顺序报号,凡报到p的人退出圈子,输出依次退出圈子的人来的序号 设有n个人坐一圈并按顺时针方向从1到n编号, 10个人围成一圈,从中选出三个人,其中恰有两个人相邻,共有多少种不同选法???