约瑟夫问题
来源:互联网 发布:手机淘宝5.6.0版本 编辑:程序博客网 时间:2024/06/06 01:56
题目描述
n个人想玩残酷的死亡游戏,游戏规则如下:
n个人进行编号,分别从1到n,排成一个圈,顺时针从1开始数到m,数到m的人被杀,剩下的人继续游戏,活到最后的一个人是胜利者。
请输出最后一个人的编号。
n个人进行编号,分别从1到n,排成一个圈,顺时针从1开始数到m,数到m的人被杀,剩下的人继续游戏,活到最后的一个人是胜利者。
请输出最后一个人的编号。
输入
输入n和m值。
输出
输出胜利者的编号。
示例输入
5 3
示例输出
4
#include <stdio.h>#include <stdlib.h>struct node{ int data; struct node *next;};struct node *creat( int n ){ int i; struct node *head,*p,*tail; head = (struct node *)malloc(sizeof(struct node)); p = (struct node *)malloc(sizeof(struct node)); head->next = NULL; p->data = 1; tail = p; head = p; for( i = 2; i <= n; i++ ) { p = (struct node *)malloc(sizeof(struct node)); p->data = i; tail->next = p; tail = p; p->next = NULL; } tail->next = head; return head;}int del( struct node *head,int m,int n ){ int num = 0; int cnt = 0; struct node *p,*q; q = head; while( q->next != head ) { q = q->next; } while( cnt < n-1 ) { p = q->next; num++; if( num%m == 0 ) { q->next = p->next; free(p); cnt++; } else q = p; } return q->data;}int main(){ int n,m; struct node *head; scanf("%d %d",&n,&m); head = creat(n); printf("%d\n",del(head,m,n)); return 0;}
0 0
- 约瑟夫问题、约瑟夫环
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- 约瑟夫问题
- jquery 按键盘上的enter事件
- UbuntuServer12.04安装MongoDB,开机自启,服务,权限
- JVM调优总结
- C/C++ 笔试面试(3)——内存管理GetMemory
- UIKit Core之笔记two--->>Socket
- 约瑟夫问题
- 【BZOJ1087】【SCOI2005】【互不侵犯king】【状压dp】
- win32中获得 文本框edit内容
- mvc Area相关技术
- HDU 2665 Kth number(区间第K大)
- sublime text ctags使用心得
- 智能家居已成为专利技术的角斗场
- 通过KVM_SET_USER_MEMORY_REGION操作虚拟机内存(Kernel 3.10.0 & qemu 2.0.0)
- java基础--网络编程