帮我解一道C语言的题.
来源:百度知道 编辑:UC知道 时间:2024/05/27 04:51:32
约瑟夫问题。下面给出源码,输入n和报的数m,打印出出圈的顺序和最后一个的编号。
a数组存放n个人的编号,从1到n。
b数组存放出圈人的顺序和编号。
josephu函数是约瑟夫算法。
#include <stdio.h>
void josephu(int a[], int b[], int n, int m)
{
int i = 0, j = 0, k = 0, l = 0;
for (i=1; i<=n; i++) {
if (a[i] > 0) {
j = j+1;
if (j == m) {
j = 0;
b[l++] = a[i];
a[i] = 0;
k++;
}
if (k == n) {
break;
}
}
if (i == n) {
i = 0;
}
}
}
int main()
{
int a[128] = {0};
int b[128]