关于约瑟夫环的问题 的通解
来源:互联网 发布:rose软件 编辑:程序博客网 时间:2024/04/29 02:52
试编写一个求解Josephus问题的函数。用整数序列1, 2, 3, ……, n表示顺序围坐在圆桌周围的人,并采用数组表示作为求解过程中使用的数据结构。然后使用n = 9, s = 1, m = 5,以及n = 9, s = 1, m = 0,或者n = 9, s = 1, m = 10作为输入数据,检查你的程序的正确性和健壮性。最后分析所完成算法的时间复杂度。
【解答】函数源程序清单如下:
void Josephus( int A[ ], int n, s, m ) {
int i, j, k, tmp;
if ( m == 0 ) {
cout << "m = 0是无效的参数!" << endl;
return;
}
for ( i = 0; i < n; i++ ) A[i] = i + 1; /*初始化,执行n次*/
i = s - 1; /*报名起始位置*/
for ( k = n; k > 1; i-- ) { /*逐个出局,执行n-1次*/
if ( i == k ) i = 0;
i = ( i + m - 1 ) % k; /*寻找出局位置*/
if ( i != k-1 ) {
tmp = A[i]; /*出局者交换到第k-1位置*/
for ( j = i; j < k-1; j++ ) A[j] = A[j+1];
A[k-1] = tmp;
}
}
for ( k = 0; k < n / 2; k++ ) { /*全部逆置, 得到出局序列*/
tmp = A[k]; A[k] = A[n-k+1]; A[n-k+1] = tmp;
}
}
例:n = 9, s = 1, m = 5
例:n = 9, s = 1, m = 0
报错信息 m = 0是无效的参数!
例:n = 9, s = 1, m = 10
- 关于约瑟夫环的问题 的通解
- 过桥问题的通解
- 关于约瑟夫环的问题
- 关于约瑟夫环的问题
- 关于约瑟夫环的一个问题
- 编程问题的O(1)通解
- 约瑟夫环的问题
- 约瑟夫环的问题
- 约瑟夫环的问题
- 约瑟夫环的问题
- 约瑟夫环的问题
- 约瑟夫环的问题
- 约瑟夫环的问题
- 关于约瑟夫环用list实现遇到的奇怪问题
- 华为机试一道关于约瑟夫环的问题
- 关于Joseph problem(约瑟夫环)问题的解法汇总
- 关于约瑟夫环的解法
- 关于约瑟夫问题的数学解答。
- 圣诞,白色圣诞 ,写于2005-12-21 15:44
- (原创)— 工作及任务分配的原则
- 06愿望
- 了解 .NET Framework 2.0 中“代码访问安全性”(CAS) 的新特点
- 再谈SQL注入入侵动网SQL版
- 关于约瑟夫环的问题 的通解
- asp.net 生命周期
- (原创)—分阶段处理任务、全方位的启动项目资源
- java语言中接口的学习
- 写java程序最容易犯的21种错误
- 【叶帆文章】CHM帮助文件在VB程序中的应用
- (原创)—项目环境与团队建设
- [转载]JavaScript触发器
- Windows Socket 1.1库函数概览