【算法】约瑟夫问题--C++源代码(g++ 7.2.0)
2017-11-10 11:59
337 查看
1 #include <iostream>
2 using namespace std;
3
4 struct Node
5 {
6 int data;
7 Node* next;
8 };
9
10 void Josephus(int total, int m , int n)
11 {
12 Node* p = NULL;
13 Node* cur = NULL;
14 Node* temp = NULL;
15
16 p = (Node*)malloc(sizeof(Node));
17 p->data = 1;
18 p->next = p;
19 cur = p;
20
21 for(int i=2; i<=total; i++)
22 {
23 Node* local = (Node*)malloc(sizeof(Node));
24 local->data = i;
25 local->next = cur->next;
26 cur->next = local;
27 cur = local;
28 }
29
30 while(--m)
31 {
32 temp = p;
33 p = p->next;
34 }
35
36 while(total--)
37 {
38 for(int i=n; --i; temp = p, p = p->next);
39 temp->next = p->next;
40 cout<<(p->data)<<" is out"<<endl;
41 free(p);
42 p = temp->next;
43 }
44 }
45
46
47 int main()
48 {
49 Josephus(10,1,3);
50 return 0;
51 }
2 using namespace std;
3
4 struct Node
5 {
6 int data;
7 Node* next;
8 };
9
10 void Josephus(int total, int m , int n)
11 {
12 Node* p = NULL;
13 Node* cur = NULL;
14 Node* temp = NULL;
15
16 p = (Node*)malloc(sizeof(Node));
17 p->data = 1;
18 p->next = p;
19 cur = p;
20
21 for(int i=2; i<=total; i++)
22 {
23 Node* local = (Node*)malloc(sizeof(Node));
24 local->data = i;
25 local->next = cur->next;
26 cur->next = local;
27 cur = local;
28 }
29
30 while(--m)
31 {
32 temp = p;
33 p = p->next;
34 }
35
36 while(total--)
37 {
38 for(int i=n; --i; temp = p, p = p->next);
39 temp->next = p->next;
40 cout<<(p->data)<<" is out"<<endl;
41 free(p);
42 p = temp->next;
43 }
44 }
45
46
47 int main()
48 {
49 Josephus(10,1,3);
50 return 0;
51 }
相关文章推荐
- 【基础】队列的插入和删除--C++源代码(g++ 7.2.0)
- 贪心算法之埃及分数问题(附c++源代码)
- 韩顺平_PHP程序员玩转算法公开课(第一季)05_使用单链表解决约瑟夫问题_学习笔记_源代码图解_PPT文档整理
- C++[算法]用数组模拟约瑟夫问题,即 N个人围成一圈,顺时针每数到给定K值的人出列,直到剩下最后一个人,求出圈人的序号顺序
- 算法面试题1:约瑟夫问题(c++实现方式)
- 算法题-约瑟夫(Joseph)问题求解
- 最大流问题-Ford-Fulkerson算法 C++极简实现
- C++单向加双向循环链表实现约瑟夫问题
- 【高级算法】模拟退火算法解决3SAT问题(C++实现)
- C++搜索与回溯算法之棋盘问题
- 贪心算法之装箱问题(c++)
- C++模板继承在g++编译中应注意的问题(if you use `-fpermissive', G++ will accept your code, but allowing the use ...)
- 【算法】斐波那契数列--C++源代码(VS2015)
- C++之数字容器装水问题(10)---《那些奇怪的算法》
- C/C++面试之算法系列--如何利用数学思想解1/2/5组合问题
- 2N皇后问题-算法-C++
- 算法竞赛_竖式问题_C++
- C++实现&nbsp;贪心算法-区间覆盖问题
- gcc和g++编译c或者c++文件碰到的问题
- 经典算法问题之约瑟夫问题