Pascal三角
6767 ワード
PASCAL三角は、PASCAL三角における1 1 1 1 1 2 1 3 3 1 4 4 1の数が1つの組合せC(n,k)である三角行列である.C(n,k)=((((((((n/1)(n−1)/2(n−2)/3)***(n−k+2)/(k−1)/(n−k+1)/k式では乗算と除算を交互に用い,nから減算された値を毎回乗算し,次の1からインクリメントされた値で除算する.行と列のカウントが0から始まると、数字C(n,k)はn行k列になります.例えばC(6,2)は6行2列目である.プログラミング出力指定階数のPASCAL三角行列.例えば以下に12次PASCAL三角形行列を示す.
1 1 1 1 1 1 2 1 3 1 4 4 1 5 10 5 1 6 15 15 6 1 7 21 35 7 1 8 28 56 28 8 1 1 9 36 84 126,284 36 9 1 10 45 120 252 210 120 45 10 1 11 55 165 330 462 462 330 165 11 1 1 12 66 220 495 792 924 495 220 66 12 1
入力無出力サンプル入力3
1 1 1 1 1 1 2 1 3 1 4 4 1 5 10 5 1 6 15 15 6 1 7 21 35 7 1 8 28 56 28 8 1 1 9 36 84 126,284 36 9 1 10 45 120 252 210 120 45 10 1 11 55 165 330 462 462 330 165 11 1 1 12 66 220 495 792 924 495 220 66 12 1
入力無出力サンプル入力3
// PAscal
#include
#include
using namespace std;
int m;
int dp[100][100];
int main()
{
memset(dp,0,sizeof(dp));
cin>>m;
for(int i = 0;i<=m;i++)
for(int j =0;j<=m;j++)
{
if(j == 0) dp[i][j] = 1;
else
{
dp[i][j] = dp[i][j-1]*(i-j+1)/(j);
}
}
for(int i = 0;i<=m;i++)
{
for(int j = 0;j<m-i;j++)
printf(" ");
for(int j =0;j<=i;j++)
{
printf("%3d ",dp[i][j]); // %3d
}
cout<<endl;
}
return 0;
}