Fortran Coder

查看: 247|回复: 4

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

[复制链接]

1

帖子

1

主题

0

精华

新人

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

使用道具 举报

120

帖子

8

主题

0

精华

宗师

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

60

帖子

14

主题

1

精华

专家

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

120

帖子

8

主题

0

精华

宗师

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

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

4

帖子

0

主题

0

精华

入门

F 币
112 元
贡献
42 点

规矩勋章

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
彼岸,有永恒的守候...
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

QQ|捐赠本站|Archiver|关于我们 About Us|群聊|Fcode

GMT+8, 2019-8-21 13:32

Powered by Discuz! X3.2

© 2001-2017 Comsenz Inc.

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