- TI nspire
[TI-nspire] [program] 내 우산은 어디에? - 순열(Permutation)
문제 :
비오는 어느 날에 5명이 한 집에 모였습니다. 모임이 끝나고 돌아가려는데 갑자기 정전이 되어 어떤게 자기 우산인지 알 수 없게 되었고, 하는 수 없이 모두 아무 우산을 하나씩 들고 집으로 돌아갔습니다.
이 때 자기 우산을 가져간 사람이 0명일 경우의 수부터 5명인 경우의 수까지 차례대로 구하시오.
Define umb()= Prgm : :Local this_combi :Local my_umb,n_person : :newList(6)→n_person : :For d5,1,5 : : For d4,1,5 : If d5=d4 Then : Goto pass4 : EndIf : : For d3,1,5 : If d5=d3 or d4=d3 Then : Goto pass3 : EndIf : : For d2,1,5 : If d5=d2 or d4=d2 or d3=d2 Then : Goto pass2 : EndIf : : For d1,1,5 : If d5=d1 or d4=d1 or d3=d1 or d2=d1 Then : Goto pass1 : EndIf : :© New Permutation list generated : 1*{d5,d4,d3,d2,d1}→this_combi : 0→my_umb : :© Count matching person : For each_d,1,5 : If this_combi[each_d]=each_d Then : my_umb+1→my_umb : EndIf : EndFor : : n_person[my_umb+1]+1→n_person[my_umb+1] : :© Disp "Test Disp",this_combi,"My Umb=",my_umb : : Lbl pass1 : EndFor : : Lbl pass2 : EndFor : : Lbl pass3 : EndFor : : Lbl pass4 : EndFor : :EndFor : :Disp "zero, one, ...., five = ",n_person :EndPrgm
umb()
zero, one, ...., five = {44,45,20,10,0,1}
Done
보기는 편하지만...
순열을 만들기 위해서(+순열 아닌 것을 골라내기 위해서)
루프를 모두 돌기 때문에 5^5 = 3125 번 루프를 돌게 되어 효율이 좋지 않음.
(카운팅 루프 제외)