约瑟夫环
来源:互联网 发布:matlab转置矩阵运算 编辑:程序博客网 时间:2024/06/11 08:45
约瑟夫环
约瑟夫问题
Time Limit: 1000MS Memory Limit: 65536KB
Submit Statistic Discuss
Problem Description
n个人想玩残酷的死亡游戏,游戏规则如下:
n个人进行编号,分别从1到n,排成一个圈,顺时针从1开始数到m,数到m的人被杀,剩下的人继续游戏,活到最后的一个人是胜利者。
请输出最后一个人的编号。
Input
输入n和m值。
Output
输出胜利者的编号。
Example Input
5 3
Example Output
4
Hint
第一轮:3被杀第二轮:1被杀第三轮:5被杀第四轮:2被杀
代码块
#include<stdio.h>#include<iostream>#include<algorithm>#include<stdlib.h>using namespace std;typedef struct node{ int data; struct node * next;}node;node *creat(int n) //建立循环链表{ node *head,*tail,*p; int i; p=(node *)malloc(sizeof(node)); p->next=NULL; head=p; tail=p; p->data=1; for(i=2;i<=n;i++) { p=(node *)malloc(sizeof(node)); p->next=NULL; p->data=i; tail->next=p; tail=p; } tail->next=head; return head;}void search(node *head,int n,int m){ node *q,*p; int num=0; int count=0; q=head; while(q->next!=head) q=q->next; while(count<n-1) { p=q->next; num++; if(num%m==0) { q->next=p->next; free(p); count++; } else q=p; } printf("%d\n",q->data);}int main(){ node * head; int n,m; scanf("%d %d",&n,&m); head=creat(n); search(head,n,m);}
阅读全文
0 0
- 约瑟夫问题、约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 约瑟夫环
- 排序算法之归并排序
- linux日期格式化及运算
- Zabbix服务器的搭建与应用(二)-------安装LNMP环境
- static 关键字
- 新人设计师常犯的7个错误
- 约瑟夫环
- KBase不能连接到服务器,错误码:-1203
- spring代码优化建议
- html5标签用css限制显示行数(字数)
- 66、java集合-Map
- 解决You have an error in your SQL syntax; check the manual that corresponds to your MySQL server错误
- 高手教你零基础系统地学习前端开发
- matlab生成多个文件夹,并根据文件的文件名粘贴进文件夹的小脚本
- Java 源码分析(五)