题目
本题要求按照规定格式打印前N行杨辉三角。
输入格式:
输入在一行中给出N(1≤N≤10)。
输出格式:
以正三角形的格式输出前N行杨辉三角。每个数字占固定4位。
输入样例:
6
输出样例:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
题解
杨辉三角可以用到动态规划来求解。
#include<iostream>
#include<iomanip>
using namespace std;
int main(){
int C[10][10]={0};
int n;
cin>>n;
C[0][0]=1;
for(int i=0;i<n;i++)
{
C[i][0]=1;
}
for(int i=1;i<n;i++)
{
for(int j=1;j<n;j++)
C[i][j]=C[i-1][j-1]+C[i-1][j];
}
for(int i=0;i<n;i++)
{//当i=n-1,setw(4)
cout<<setw(4+(n-i-1))<<C[i][0];
for(int j=1;j<i+1;j++)
cout<<setw(4)<<C[i][j];
cout<<endl;
}
}
背包问题,空间优化版(bp):
#include<iostream>
#include<iomanip>
using namespace std;
int main(){
int n = 0;
cin >> n;
int list[n+2] = {0,1};
for(int i=1;i<=n;i++){
cout<<setw(4+n-i);
for(int j=i;j>=1;j--){
list[j] = list[j-1] + list[j];
j == i ? cout << list[j] : cout << setw(4) << list[j];
}
cout << endl;
}
}