調査のお願い

 投稿者:GAI  投稿日:2013年10月 9日(水)19時46分51秒
  1~8の数字のカードがあり、2枚ずつのペアを4組作ったとき、各ペアのカードの数字の差が1、2,3,4となる組合せは何通りあるか?
例(2,3)、(6,8)、(4,7)、(1,5)


同じく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・・・が作れることが言えるのでしょうか?
そしてそれぞれの組合せの数が予想できるのでしょうか?
この疑問を解いてくれませんか。
 

Re: 調査のお願い

 投稿者:山中和義  投稿日:2013年10月 9日(水)21時49分0秒
  > 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


 

戻る