Re: [問題] 排列組合的種類

看板Fortran作者 (MoOn)時間12年前 (2012/04/14 13:43), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/3 (看更多)
※ 引述《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
文章代碼(AID): #1FYGwFcE (Fortran)
討論串 (同標題文章)
文章代碼(AID): #1FYGwFcE (Fortran)