美文网首页
poj1012 约瑟夫环

poj1012 约瑟夫环

作者: 暖昼氤氲 | 来源:发表于2019-10-31 20:07 被阅读0次
/*
Time:2019.10.31
Author: Goven
type:约瑟夫环问题 
ref:https://www.cnblogs.com/yu-chao/archive/2011/05/29/2062276.html
*/
#include<iostream>
using namespace std;

bool test(int k, int m) {
    int n = 2 * k;
    int j = 0;
    for (int i = 0; i < k; i++) {//进行k次报数 
        j = (j + m - 1) % (n - i);
        if (j < k) return false;
    }
    return true;
}
int main()
{
    int Joseph[14] = {0};
    for (int i = 1; i < 14; i++) {//表示人数的一半 
        int j = i + 1;//表示报数
        while(1) {
            if (test(i, j)) {
                Joseph[i] = j;
                break;
            }
            
            if (test(i, j + 1)) {
                Joseph[i] = j + 1;
                break;
            }
            
            j = i + j + 1;//Att:为何能够替代成j++? 见ref
        } 
    }
    
    int k;
    while (cin >> k && k) {
        cout << Joseph[k] << endl;
    }   
    return 0;
} 

相关文章

  • poj1012 约瑟夫环

  • 【POJ1012】-约瑟夫问题

    题目地址:http://poj.org/problem?id=1012 问题描述:约瑟夫问题是这样一个问题,N个人...

  • 约瑟夫环问题

    约瑟夫环问题约瑟夫环描述:约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3…n分别表示)围...

  • 循环单链表实现约瑟夫环(C语言)

    约瑟夫环

  • 约瑟夫环

    题目:100名学生围成一个圈, 编号从1到100,从第一名学生开始报数,从1-9报数 每报出9就退出,直到所有学生...

  • 约瑟夫环

  • 约瑟夫环

    问题:1~n个人围成一圈,从1开始报数,每次数到m这个人就出列,问最后剩下的是几号? 做法:递归。 假设剩下的是f...

  • 约瑟夫环

    解法一 用一个list模拟删除过程 解法二 数学公式,推到过程还没看懂

  • 约瑟夫环

    之前去面试的时候遇到这个问题,作为一只算法渣渣,自然带着恐惧的心情,然后自己瞎捣鼓了好长时间终于拼凑出来了一个很菜...

  • 约瑟夫环

网友评论

      本文标题:poj1012 约瑟夫环

      本文链接:https://www.haomeiwen.com/subject/erxxbctx.html