题目地址
思维过程:第一次做的时候,并没有抱着解决一类题的观念去做,美其名曰抱着解决问题的观念。然后还看了下面的递推求解练习,知道是递推题,所以只想着画出来当n=3时的面数。原本的想法是尽量切割更多的平面,连对于直线切割平面怎么获得最大的平面数都不晓得。可是这个“更多的平面”很是模糊,将递推变成了模拟,并且是毫无根据的模拟,没法做。
然后就是今天回顾了,发现漏下许多知识,包括直线切割平面如果获得最大的平面数,参考了某博客。
博客地址
总结起来就是,对于有n条线,第n条线要与n - 1条线都相交,得到n - 1个交点,所以有n - 2条线段和2条射线,
所以又增加了n 个区域。这个是最基本的
回到题目,对于有n - 1条折线时,就存在2 * (n - 1)条线,所以需要和n - 1条线相交,因为是折线,所以折线的第二条线也需要和第n - 1条折线相交,它与自己的那一条线只是个交点,并没有穿过,所以只有两条射线和两条线段,并且两条线段生成一个区域。
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
int num[10005];
num[1] = 2;
for(int i = 2; i < 10005; i++) {
num[i] = num[i - 1] + 4 * (i - 1) + 1;
}
while(n--) {
int m;
cin >> m;
cout << num[m] << endl;
}
return 0;
}