Re: [問題] 排列組合的種類
※ 引述《laa7352 (Laa)》之銘言:
: ※ 引述《magaiml (XD)》之銘言:
: : 想請教一下這類型的問題如何寫出來?
: : 就是排列組合的種類
: : ex 從 1 2 3 4 5 數字中取出3個來排列
: : 5C3=10種
: : 我個人是用樹狀圖的概念寫 如
: : 1→2→3
: : ↘4
: : ↘5
: : ↘3→4
: : ↘5
: : ↘4→5
: : 2→3→4
: : ↘5
: : ↘4→5
: : 3→4→5
: : 該如何寫呢各位?
: : 麻煩一下各位了。
這個範例是我之前寫衛星組合時用的
你再拿你要的地方再改吧
我也懶得切出來><
implicit none
integer*4 m,n,a
integer*4,allocatable :: num(:),sate(:)
real*8,allocatable :: f(:,:)
open(11,file="input.txt",status="old"); open(12,file="output.txt")
write(*,*)"輸入衛星各數與選取各數"
read(*,*)m,n
allocate(num(0:n)); allocate(f(m,7)); allocate(sate(m))
num=0; f=0; sate=0
do a=1,m
read(11,*)sate(a),f(a,:)
end do
call sort(m,n,num,1,sate,f)
end
recursive subroutine sort(up,low,num,num1,sate,f)
implicit none
integer*4 up,low,num1,i,num(0:low),sate(up)
real*8 f(up,7)
100 format(i2,',',3(f19.8,','),2(f14.3,','),f12.8,',',f24.20)
if (num1-1==low) then
do i=1,low
write(12,100)sate(num(i)),f(num(i),1:7)
end do
else
do i=num1,up
num(num1)=i
if (num(num1-1)>=num(num1)) then
cycle
else
call sort(up,low,num,num1+1,sate,f)
end if
end do
end if
end subroutine sort
變數命名的方式就不要太在意了
你也知道作業就是讓自已看懂的東東......
有問題就自己想吧
我也忘了我之前是怎麼寫的
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.166.97.173
討論串 (同標題文章)
Fortran 近期熱門文章
PTT數位生活區 即時熱門文章