约瑟夫环
来源:互联网 发布:在线网络理财产品排名 编辑:程序博客网 时间:2024/05/01 02:15
#include<stdio.h>#include<stdlib.h>typedef struct node{int rank;struct node* next;}*Node;//遍历void print(Node head){Node temp=head->next;while(temp){printf("%d ",temp->rank);temp=temp->next;}} //建环 n个人 void build(Node head,int n){Node temp=head;for(int i=1;i<n+1;i++){//插入n个人到后面 Node p=(Node)malloc(sizeof(struct node)); p->rank=i; p->next=temp->next; temp->next=p; temp=p;}} //计数int getNum(Node head){Node temp=head->next;int num=0;while(temp){num++;temp=temp->next;}//printf("个数%d ",num);return num;} //约瑟夫环问题void joseph(Node head,int m){Node temp=head;int num=0;while(temp){if((num+1)==m){Node p=temp->next;temp->next=temp->next->next;free(p);num=0;}else{temp=temp->next;num++;}//printf("\n");//print(head);if(temp->next==NULL&&getNum(head)!=1){temp=head;}else if(getNum(head)==1){break;} }}//递归求解int joseph2(int n,int m){int s=0;for(int i=2;i<n+1;i++){s=(s+m)%i;}return s+1;}int main(){Node head=(Node)malloc(sizeof(struct node));head->next=NULL;build(head,20);printf("筛选前:");print(head); printf("\n%d ",joseph2(getNum(head),7));joseph(head,7); printf("\n筛选后:"); print(head);}
0 0
- 约瑟夫问题、约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- Android shape,自己简单的总结。和学习。
- Andriud_UI类继承关系图
- StringBuffer与StringBuilder的区别
- js自定义对象
- Linux中文件隐藏属性chattr,lsattr
- 约瑟夫环
- 使用X-UA-Compatible来设置IE浏览器兼容模式
- handler 进行主线程与子线程之间的信息传递
- c#----泛型(一)
- maven指定依赖打成一个jar包
- struts2的result-type详解
- LINQ 的使用
- vmware workstation11下安装ubuntu14.04
- java汉字转拼音