约瑟夫环
来源:互联网 发布:想学软件编程 编辑:程序博客网 时间:2024/06/11 06:13
约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。
//利用数组int josephu(int n,int m){ int *arr; arr = new int[n]; memset(arr,1,n); int i=0,j=0; for ( i = 0;i < n;i++) { int flag = 0; while(flag<m) { if (j == n) { j = 0; } if (arr[j]) { flag++; } j++; } arr[j-1]=0; cout<<"第"<<i<<"个:"<<" "<<j<<endl; } delete []arr; return i;}//利用链表typedef struct Node{ int data; struct Node* next;}Node,*PLink;int josephu_link(int n,int m){ PLink head = NULL; PLink tail = NULL; head = new Node;//(PLink)malloc(sizeof(Node)); if(head==NULL) return -1; //初始化循环链表 tail = head; int count = 1; while(count<=n) { tail->data = count; tail->next = new Node; tail = tail->next; count++; } tail->data = count; tail->next = head; PLink pnode = head; while(head!=tail) { int flag = 1; while(flag++<m) { tail = tail->next;//head head = head->next; } PLink delNode = head; cout<<delNode->data<<" "; head = head->next; tail->next = head; delete(delNode); delNode = NULL; } return n;}
阅读全文
0 0
- 约瑟夫问题、约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 数字金字塔(动态规划 输出路径)
- Android RecyclerView设置点击事件
- DroneKit教程(三):连接Pixhawk飞控
- 拓扑排序
- c++实现skipList
- 约瑟夫环
- MY SQL语句常用集合
- jstree动态创建节点
- 2017中国人工智能与大数据峰会早鸟票报名!
- java学习初探十六之增强for、foreach
- 简单的json数据请求(php)
- 浅谈java基本库中关于时间的那几个类
- 如何写SysV服务管理脚本
- 深入理解Android(二):Java虚拟机Dalvik