|
> No.3166[元記事へ]
GAIさんへのお返事です。
> 1~10の数字のカードがあり、2枚ずつのペアを5組作ったとき、各ペアのカードの数字の差が1,2,3,4,5となる組合せは何通り?(自分なりに調べたら10通りかなと思うんですが自信がありません。)
> 例(2,3)、(8,10)、(4,7)、(5,9)、(1,6)
>
> これが1~12、1~14、1~16・・・とカードの数字と増えたとき
> 各ペアの差が1~6、1~7、1~8・・・が作れることが言えるのでしょうか?
LET N=10 !※偶数
PUBLIC NUMERIC C !解の個数
LET C=0
DIM F(N) !数字1~n
MAT F=ZER
DIM A(N) !並び
CALL try(1,N,F,A)
END
EXTERNAL SUB try(P,N,F(),A()) !バックトラック法で検索する
FOR i=1 TO N !未使用の数字が候補である
IF F(i)=0 THEN
LET F(i)=1 !使用中
LET OK=1
IF MOD(P,2)=0 THEN !(2n-1,2n)=p/2
IF i-A(P-1)<>P/2 THEN LET OK=0
END IF
IF OK=1 THEN !条件を満たす
LET A(P)=i
IF P=N THEN !すべて並んだなら
LET C=C+1
PRINT "No.";C
MAT PRINT A;
ELSE
CALL try(P+1,N,F,A) !次へ
END IF
END IF
LET F(i)=0 !元に戻す
END IF
NEXT i
END SUB
実行結果
No. 1
1 2 4 6 7 10 5 9 3 8
No. 2
1 2 7 9 3 6 4 8 5 10
No. 3
2 3 6 8 7 10 1 5 4 9
No. 4
2 3 8 10 4 7 5 9 1 6
No. 5
3 4 8 10 6 9 1 5 2 7
No. 6
7 8 1 3 2 5 6 10 4 9
No. 7
8 9 1 3 4 7 2 6 5 10
No. 8
8 9 3 5 1 4 6 10 2 7
No. 9
9 10 2 4 5 8 3 7 1 6
No. 10
9 10 5 7 1 4 2 6 3 8
|
|