概要
有一堆煤球,堆成三角棱锥形。具体:
第一层放 1 个,
第二层放 3 个(排列成三角形),
第三层放 6 个(排列成三角形),
第四层放 10 个(排列成三角形),
…
如果一共有100层,共有多少个煤球?
整体架构流程
技术细节
#include <stdio.h>
int main() {
//i层多加i个煤球
int i=1;
int j[100];
j[0] = 1;//第一层煤球
int sum = 1;
for (i=2; i <= 100; i++) {//100层
j[i - 1] = j[i - 2] + i;//第i层煤球数=上一层+i个煤球,j[i-1]因为数组从0开始
sum += j[i - 1];//煤球一共多少个
}
printf("100层共有%d个煤球", sum);
}
分析案例
#include <iostream>
using namespace std;
int f[101];//f[0]因为数组从0开始,101这样第i个就是第i层,f[0]=0
int main()
{
f[1] = 1;//第一层煤球=1
for (int i = 2; i <= 100; i++)
f[i] = f[i - 1] + i;//每一层新增的煤球数
for (int i = 2; i <= 100; i++)
f[i] = f[i - 1] + f[i];//一共有多少煤球数(都设为f[i] 优点:节省算法空间)
cout << f[100];//输出100层,共有多少个煤球
return 0;
}