「組合せの数」の編集履歴(バックアップ)一覧はこちら

組合せの数」(2010/07/21 (水) 21:06:23) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

#asciiart(blockquote){ #console Declare Function printf CDECL Lib"msvcrt" (fmt As *Byte, ...) As Long /*********************************************************** combinat.c -- 組合せの数 ***********************************************************/ Function comb(n As Long, k As Long) As Long If k = 0 Or k = n Then comb = 1 Exit Function End If /* if (k == 1) return n; */ comb = comb(n - 1, k - 1) + comb(n - 1, k) End Function Function combination(n As Long, k As Long) As DWord Dim i As Long, j As Long Dim a[17] As DWord If n - k < k Then k = n - k If k = 0 Then combination = 1 Exit Function End If If k = 0 Then combination = n Exit Function End If If k > 17 Then combination = 0 /* error */ Exit Function End If For i = 1 To k-1 a[i] = i + 2 Next For i = 3 To n - k + 1 a[0] = i For j = 1 To k a[j] = a[j] + a[j - 1] Next Next combination = a[k - 1] End Function Const N = 8 Dim n As Long, k As Long printf(Ex"\n k") For k = 0 To N printf("%6d", k) Next printf(Ex"\nn ") For k = 0 To N printf("------") Next printf(Ex"\n") For n = 0 To N printf("%d |", n) For k = 0 To n printf("%6d", comb(n, k)) Next printf(Ex"\n") Next printf(Ex"\n k") For k = 0 To N printf("%6d", k) Next printf(Ex"\nn ") For k = 0 To N printf("------") Next printf(Ex"\n") For n = 0 To N printf("%d |", n) For k = 0 To n printf("%6lu", combination(n, k)) Next printf(Ex"\n") Next For k = 0 To 17 printf(Ex"34C%-2d = %10lu\n", k, combination(34, k)) Next }

表示オプション

横に並べて表示:
変化行の前後のみ表示: