crella
V2EX  ›  问与答

求几个与约瑟夫循环有关算法问题的优雅解法

  •  
  •   crella · Apr 3, 2020 via Android · 976 views
    This topic created in 2273 days ago, the information mentioned may be changed or developed.
    无聊想了个与约瑟夫循环有关的算法问题。希望可以看到优雅的解答。

    利益相关:不是作业。

    场景 1


    编程语言列表 T 的元素依次是 php java py go c# js c++ rust 。

    第 1 个程序员说 php 才是最好的语言。
    第 2 个程序员说 c++才是最好的语言。
    ……
    第 n 个程序员会把语言列表 T 去除第 n-1 个程序员喜欢的语言后得到的新列表 N,设第 n-2 个程序员喜欢的语言在 T 里的索引值为 i,设新列表 N 的索引可以首尾循环,从 i 开每隔 2 个位置去掉一个元素,得到列表 N 里的最后一个元素就是他认为的最好的语言。



    比如第 3 个程序员,他的 N 表是 php java py go c# js rust 然后从 php 开始每隔 2 个位置去掉一个元素后的 N 表依次是这样的:
    php java py c# js rust
    php java c# js
    php java js
    php js
    php
    ,于是第 3 个程序员认为最好的语言是 php 。

    假设:只能修改第 1 个和第 2 个程序员认为最好的语言。
    规定:前两个发言的语言不能重复



    问题一:已知第一个程序员支持 php,求第二个程序员支持的语言,使得当支持‘’php 是最好的语言‘’的次数达到 10000 次时,所需要的程序员的人数取得最大值。

    问题二:求当支持‘’php 是最好的语言‘’的次数达到 10000 次时,所需要的最少的程序员的人数,以及第 1 个和第 2 个最好的语言。

    问题三:假设第 n 个程序员支持 c++时,语言列表 T 里面 c++与第(n-1)个程序员支持的语言的位置会互换,而且这个改变会影响后续对表 T 的读取;其他规则不变。

    在此条件下,求问题 2 的解。
    2 replies    2020-04-03 15:18:57 +08:00
    moonlord
        1
    moonlord  
       Apr 3, 2020
    还说不是作业!我差点就信了!
    wysnylc
        2
    wysnylc  
       Apr 3, 2020
    就是作业
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3834 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 10:19 · PVG 18:19 · LAX 03:19 · JFK 06:19
    ♥ Do have faith in what you're doing.