Fortran Coder

查看: 4691|回复: 4
打印 上一主题 下一主题

[通用算法] 萌新求助,约瑟夫环问题

[复制链接]

81

帖子

0

主题

0

精华

专家

F 币
471 元
贡献
232 点

规矩勋章新人勋章元老勋章

QQ
楼主
发表于 2019-5-15 10:01:53 | 显示全部楼层
这里是一种非链表方法

[Fortran] 纯文本查看 复制代码
Program main
  Implicit None
  Integer , parameter :: N = 41 , K = 3
  logical :: isDie(N)
  integer :: nAlive , nCurr , i
  isDie = .false.
  nCurr = 1
  nAlive= N
  Do
    if( nAlive < K ) exit
    Do i = 1 , K
      nCurr = next()
    End Do
    isDie(nCurr) = .true.
    nAlive = nAlive - 1
  End Do
  Do i = 1 , N
    if( .not.isDie(i) ) write(*,*) i
  End Do
  
contains
  integer function next()
    integer :: nt
    nt = nCurr + 1
    do
      if( nt > N ) nt = 1
      if( .not.isDie(nt) ) then
        next = nt
        return
      end if
      nt = nt + 1
    end do
  end function next
End Program main
彼岸,有永恒的守候...
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-10 14:11

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表