118パスカルの三角形C言語

numRowsの数ヤンホイトライアングルと世代前の非負整数numRowsの数、与えられました。

パスカルの三角形では、各番号は、その左上と右上の数です。

例:

入力:5
出力

[ [1]、
[1,1]、
[1,2,1]、
[1,3,3,1]、
[1,4,6,4,1]
]

ポインタを使用しなかったが、摩耗の戻り値の型の力がこれです::ここに私の日常のソリューションがあるのint **生成(int型のnumRowsの数を、int型* returnSize、int型** returnColumnSizes)

する#include <stdio.hの>
INT)(主
{
I INT、J、行。
INT [100] [100] = {0}。
printf( "请输入行数:");
scanf関数( "%のD"、&行)。
ための式(I 0 =; I <行; iが++)
{
(j = 0; J <I + 1、J ++)のために
{
IF(J == 0 || J == I)
{
[I] [J] = 1;
}

{
[i] [j]は[I-1] [J-1] + [I-1]〜[J] =。
}
のprintf( "%dの"、[I] [J])。
}
のprintf( "\ n");
}
}

ここソリューション締める力である:ちょっとポインタのポインタが、実際には非常に大きな頭ですが、見にもっと支払わなければなりません

int型**生成(int型のnumRowsの数、int型* returnSize、int型** returnColumnSizes){
     * ReturnSize = numRowsの数; //は、パスカルの三角形=入力numRowsの数を返さreturnSize行の数を表す整数へのポインタであります
    * ReturnColumnSizes =(INT *)はmalloc(numRowsの数*はsizeof(INT));配列へのポインタ、配列要素の対応する列の要素の数を指す// returnColumnSizes
    INT ** RES =(INT **)はmalloc((* returnSize)*はsizeof(INT *)); // RESはポインタで構成される配列へのポインタであり、各ポインタが指し示す三角形に対応数直線、RESは、二次元アレイであります
    私は0を= int型。
    用(; I <* returnSize; I ++){
        (* returnColumnSizes)[I] = I + 1。
        RES [I] =(INT *)はmalloc((* returnColumnSizes)[I] *はsizeof(INT))。
        RES [i]が[0] = 1;
        RES [i]は[I] = 1。 
    }
    以下のために(私は2 =、iが<= numRowsの数 - 1; I ++){
        用(INT J = 1、J <I、J ++){
            RES [I] [J] = RES [I - 1] [J - 1] + RES [I - 1]〜[J]。
        }
    }
    解像度を返します。
}
まず、あなたがforループを見て、それがパスカルの三角形の割り当て1の要素の二つの側面を与えることです。(* ReturnColumnSizes)[I] = I + 1、対応する行の要素に与えられた番号、
RES [I] =(INT *)はmalloc((* returnColumnSizes)[I] *はsizeof(INT));及び記憶領域を割り当てる要素の数に応じました。次いで、最初の二つの各行の要素と1の値を割り当てます。

 

おすすめ

転載: www.cnblogs.com/cocobear9/p/12324374.html