Fortran Coder

查看: 4632|回复: 4

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

[复制链接]

1

帖子

1

主题

0

精华

新人

F 币
19 元
贡献
6 点
发表于 2019-4-29 11:56:27 | 显示全部楼层 |阅读模式
如何用Fortran解决约瑟夫环问题

178

帖子

15

主题

0

精华

大宗师

F 币
4973 元
贡献
1152 点
发表于 2019-4-29 16:22:55 | 显示全部楼层
这种问题太过分了
请自学链表的知识以及Fortran如何实现链表的知识

125

帖子

34

主题

1

精华

大师

F 币
1129 元
贡献
587 点
发表于 2019-4-29 18:07:40 来自移动端 | 显示全部楼层
百度百科上有很多非链表方法

178

帖子

15

主题

0

精华

大宗师

F 币
4973 元
贡献
1152 点
发表于 2019-4-29 18:46:42 | 显示全部楼层
weixing1531 发表于 2019-4-29 18:07
百度百科上有很多非链表方法

这种问题难道不就是用来做链表的练习的么……

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-3-29 05:46

Powered by Tencent X3.4

© 2013-2024 Tencent

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