http://poj.org/problem?id=1012答案以954ms飘过,不过这道题可以轻松用打表过思路:如果我们把每个人位于数组中的原始编号记为绝对编号,每次循环过后相对于绝对编号为0的人的编号为相对编号,那么在这道题里,绝对编号是不重要的,只需要每次相对编号n都落在n>=k的位置上,那么...
分类:
其他好文 时间:
2015-05-05 21:12:42
阅读次数:
129
#include #include typedef struct Node{ int data; struct Node *next;}node;//创建约瑟夫环node* create(int n){ node *head,*p,*s; int i; head = (...
分类:
其他好文 时间:
2015-05-03 21:55:46
阅读次数:
97
引言 常见的约瑟夫环问题有用循环链表做的,有用数组做的,这里提供一个用数学公式做的,由此可见,很多计算机的问题如果最终用到数学的知识,时间复杂度会大大的降低 分析问题 首先我们对0到n-1删除第一个数进行分析,第一个被删除的数一定是序号为m-1的数,因为0号数了1,1号数了2,m-1号数了m,那么应...
分类:
编程语言 时间:
2015-05-03 20:28:43
阅读次数:
150
#include
#include
#define OK 1;
#define ERROR 0;
typedef int Status;
typedef int Elemtype;
typedef struct Cnode{
Elemtype data;
struct Cnode *next;
}CNode;
CNode *joseph;
Sta...
分类:
编程语言 时间:
2015-05-03 17:33:37
阅读次数:
121
【题意】给出一个set,set中有几个数。现在给出n个人,环成一圈搞约瑟夫。。。开始时从第1号报数,每次从set中随机选出一个数s,等报数到s后,报s的人出圈,其他人继续报数。最后只剩1人时,他就胜出。问最后可能有哪些人胜出,输出编号。【解释】设dp[i][j]为剩余i个人,并且该j号报数则状态转移...
分类:
其他好文 时间:
2015-05-02 21:55:37
阅读次数:
126
记得大一学数据结构的时候用节点构成了一个循环链做过这个题,前几天偶然想到,为什么不用数组来做呢?用循环链做的/*
**********************************************************
*解法
*
*使用一个循环链,其中包含两个元素,一个为指向下一个人的
*节点,一个为是否出列的..
分类:
其他好文 时间:
2015-04-29 17:34:24
阅读次数:
113
题目:n 个数字(0,1,…,n-1)形成一个圆圈,从数字 0 开始,每次从这个圆圈中删除第 m 个数字(第一个
为当前数字本身,第二个为当前数字的下一个数字) 。 当一个数字删除后,从被删除数字的下一个继续删除
第 m 个数字。求出在这个圆圈中剩下的最后一个数字
思路:这就是约瑟夫环问题,使用STL中的list来解决,是最基础的解决办法
int Joseph(list& ring,int...
分类:
其他好文 时间:
2015-04-29 09:59:37
阅读次数:
135
问题:有n个人站成环 从1开始报数,报k的人去死,之后下一个人报1,问当你是第几个的时候可以活下来?这篇文章主要是讲解f(n,k)=(f(n-1,k)+k)%n 这个公式是什么意思为什么是对的虽然公式是使用数学解法 但开始时我会手动的模拟过程 其是有意义的 十分有助于理解首先我们看样一个问题n=2,...
分类:
其他好文 时间:
2015-04-28 18:13:57
阅读次数:
189
题目链接:http://acm.swjtu.edu.cn/JudgeOnline/showproblem?problem_id=2213思路分析:该问题与约瑟夫问题相似;每次将前n张牌放到队列的最后,可以将整个队列看做一个环,每次向前移动n步,则下一张牌的号码即被编号为n,并在该环中除去该牌,在继续...
分类:
其他好文 时间:
2015-04-26 22:44:32
阅读次数:
192
题意:有k个好人和k个坏人进行约瑟夫环问题,好人在前面,坏人在后面(即好人编号为0...k - 1),求一个最小的m,使他们用m报数时所有坏人在有好人出局之前出局解法:一开始没怎么细想就写了个模拟……果断T了……于是想把结果打表……结果发现k = 13时根本跑不完……于是还是枚举m,推导每次出局的人...
分类:
其他好文 时间:
2015-04-25 12:12:01
阅读次数:
125