King's Game---hdu5643(约瑟夫环)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5643
约瑟夫环问题的原来描述为,设有编号为1,2,……,n的n(n>0)个人围成一个圈,从第1个人开始报数,报到k时停止报数,报k的人出圈,再从他的下一个人起重新报数,报到m时停止报数,报k的出圈,……,如此
下去,直到所有人全部出圈为止。当任意给定n和k后,设计算法求n个人出圈的次序。 稍微简化一下。 问题描述:n个人(编号0~(n-1)),从0开始报数,报到(k-1)的退出,剩下的人继续从0开始报数。求胜利者的编
号。
第一次报数时出局的编号为 k - 1;接下来从 编号为 k 的开始, 依次变为编号为 0,1,2,3,4.....n-1 ;那么以此类推当本次编号为 x 在上一局中的编号为 (x+k)% i ;i 是上一局有多少人;
我们假设获胜的人的编号z(在第一局还没开始的时候的编号);因此我们用 f[i]表示在倒数第i局中 z 这个人所在编号为 f[i]; 所以f[1] = 0;
int f[N] ={ 0 };
for(int i=2; i<=n; i++)
{
f[i] = (f[i-1] + k) % i;
}
本题中稍微做了一点改变就是k是变化的,不是固定的
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <stdlib.h>
#include <queue>
#include <map> using namespace std; typedef long long LL; #define met(a, b) memset(a, b, sizeof(a))
#define INF 0x3f3f3f3f
#define N 5210 int main()
{
int T, n, f[N] = { 0 }; scanf("%d", &T); while(T--)
{
scanf("%d", &n); int k = n-1; for(int i=2; i<=n; i++)
{
f[i] = (f[i-1] + k) % i; k --;
}
printf("%d\n", f[n] + 1);
}
return 0;
}
King's Game---hdu5643(约瑟夫环)的更多相关文章
- HDU 5643 King's Game 【约瑟夫环】
题意: 变形的约瑟夫环,最初为每个人编号1到n,第i次删去报号为i的人,然后从它的下一个人开始重新从1开始报号,问最终剩下第几号人? 分析: 首先看一下裸的约瑟夫环问题: 共n个人,从1开始报数,报到 ...
- HDU 5643 King's Game | 约瑟夫环变形
经典约瑟夫环 }; ; i<=n; i++) { f[i] = (f[i-] + k) % i; } 变形:k是变化的 #include <iostream> #include &l ...
- php解决约瑟夫环的问题
php里面解决约瑟夫环还是比较方面的,但是下面的方法太费空间 <?php class SelectKing{ private $m;//幅度 private $n;//总数 public fun ...
- 约瑟夫环问题的链表解法和数学解法(PHP)
约瑟夫环问题 一群猴子排成一圈.按1,2,-,n依次编号.然后从第1仅仅開始数,数到第m仅仅,把它踢出圈.从它后面再開始数,再数到第m仅仅.在把它踢出去-.如此不停的进行下去.直到最后仅仅剩下一仅仅猴 ...
- C#实现约瑟夫环问题
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace orde ...
- C语言数组实现约瑟夫环问题,以及对其进行时间复杂度分析
尝试表达 本人试着去表达约瑟夫环问题:一群人围成一个圈,作这样的一个游戏,选定一个人作起点以及数数的方向,这个人先数1,到下一个人数2,直到数到游戏规则约定那个数的人,比如是3,数到3的那个人就离开这 ...
- C语言链表实现约瑟夫环问题
需求表达:略 分析: 实现: #include<stdio.h> #include<stdlib.h> typedef struct node { int payload ; ...
- javascript中使用循环链表实现约瑟夫环问题
1.问题 传说在公元1 世纪的犹太战争中,犹太历史学家弗拉维奥·约瑟夫斯和他的40 个同胞被罗马士兵包围.犹太士兵决定宁可自杀也不做俘虏,于是商量出了一个自杀方案.他们围成一个圈,从一个人开始,数到第 ...
- tc 147 2 PeopleCircle(再见约瑟夫环)
SRM 147 2 600PeopleCircle Problem Statement There are numMales males and numFemales females arranged ...
随机推荐
- django 将model转换为字典
from django.forms.models import model_to_dict from projects.models import ProjectInformation site = ...
- mysql 位运算
& 与运算 | 或运算 ^ 异或运算 或者 你也可以将 与运算理解为 + 法 例如 1|2 = 3 (1+2 = 3)1|2|4 = 7 (1+2+4 = 7) 将 异或运算理解为 - ...
- oozie调度hive脚本demo
1. 环境配置 2. 脚本配置 3. 执行job 4. 查看结果 待发布 ..
- Android基础总结(七)BroadcastReceiver
广播(掌握) 广播的概念 现实:电台通过发送广播发布消息,买个收音机,就能收听 Android:系统在产生某个事件时发送广播,应用程序使用广播接收者接收这个广播,就知道系统产生了什么事件. Andro ...
- jrtplib编译指南
The library offers support for the Real-time Transport Protocol (RTP), The library uses the JThread ...
- 2015 Multi-University Training Contest 3 1006 Beautiful Set
Beautiful Set Problem's Link: http://acm.hdu.edu.cn/showproblem.php?pid=5321 Mean: 给出一个集合,有两种计算集合的值的 ...
- 隐马尔科夫模型(hidden Markov model, HMM)
- MRF能量优化
一个外国博客,写的比较清晰 http://nghiaho.com/?page_id=1366 MRF优化牛人 重庆大学的教授 1 http://qianjiye.de/2015/09/reparame ...
- Java设计模式菜鸟系列(十)模板方法模式建模与实现
转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39806973 模板方法模式(Template Method):在一个方法中定义了一个算法的 ...
- typecho篇
百度百科的介绍: Typecho是由type和echo两个词合成的,来自于开发团队的头脑风暴. Typecho基于PHP5开发,支持多种数据库,是一款内核强健﹑扩展 方便﹑体验友好﹑运行流畅的轻量级开 ...