约瑟夫环问题(数组实现)
2016-12-08 22:26
183 查看
设编号为1,2,… n的n个人围坐一圈,约定编号为k(1<=k<=n)的人从1开始报数,数到m 的那个人出列,它的下一位又从1开始报数,数到m的那个人又出列,依次类推,直到所有人出列为止,由此产生一个出队编号的序列。
#include <stdio.h>
#include <malloc.h>
int Josephu(int n, int m)
{
int flag, i, j = 0;
int *arr = (int *)malloc(n * sizeof(int));
for (i = 0; i < n; ++i)
arr[i] = 1;
for (i = 1; i < n; ++i)
{
flag = 0;
while (flag < m)
{
if (j == n)
j = 0;
if (arr[j])
++flag;
++j;
}
arr[j - 1] = 0;
printf("第%4d个出局的人是:%4d号\n", i, j);
}
free(arr);
return j;
}
int main()
{
int n, m;
scanf("%d%d", &n, &m);
printf("最后胜利的是%d号!\n", Josephu(n, m));
system("pause");
return 0;
}
#include <stdio.h>
#include <malloc.h>
int Josephu(int n, int m)
{
int flag, i, j = 0;
int *arr = (int *)malloc(n * sizeof(int));
for (i = 0; i < n; ++i)
arr[i] = 1;
for (i = 1; i < n; ++i)
{
flag = 0;
while (flag < m)
{
if (j == n)
j = 0;
if (arr[j])
++flag;
++j;
}
arr[j - 1] = 0;
printf("第%4d个出局的人是:%4d号\n", i, j);
}
free(arr);
return j;
}
int main()
{
int n, m;
scanf("%d%d", &n, &m);
printf("最后胜利的是%d号!\n", Josephu(n, m));
system("pause");
return 0;
}
相关文章推荐
- 约瑟夫环问题(数组法)c语言实现
- C语言用数组1. 简单约瑟夫环问题: N个人,编号从1~N围成一圈,输入一个数T,从1号开始报数,报到T的人出圈;下一人又从1开始报数,下一个报到T的人出圈,输出出圈顺序。 考虑问实现约瑟夫环问题
- 约瑟夫环问题的PHP实现 使用PHP数组内部指针操作函数
- 约瑟夫环问题的数组实现
- 约瑟夫环问题的两种实现[链表+数组]
- 约瑟夫环问题的数组实现
- 约瑟夫环问题的 PHP 实现--使用 PHP 数组内部指针操作函数
- 约瑟夫环问题(不带头结点单循环链表实现和数组实现)
- 约瑟夫环问题——初步了解+数组实现
- 约瑟夫环问题的PHP实现 使用PHP数组内部指针操作函数
- C语言,数组实现约瑟夫环问题(两种方法)
- 用数组实现约瑟夫环问题
- 约瑟夫环问题(c语言数组实现)
- 用数组和链表实现约瑟夫环问题
- 单链表实现猴子选大王(约瑟夫环问题)
- 约瑟夫环问题 链表实现
- 一个关于去除数组重复元素的问题(C语言实现)
- 约瑟夫问题的数组实现
- QP实现之函数指针数组无法获取正确地址的问题
- java实现简单的约瑟夫环问题