問題描述
問題分析
將第一幅圖標記爲 r=0 ; 將第二幅圖標記爲 r=1 ; 將第三幅圖標記爲 r=2…以此類推
按照列來分析:圖中陰影格子的增長方式爲在整個陰影區域左右兩邊各增加一個格子,在整個陰影每列上下各增加兩個格子。根據觀察,每次增加兩個格子的列數正好爲自然奇數列(即:1 3 5 7 9…)。
因此要求解 T(n) ,只需要將 T(n-1) 和在 T(n-1) 的基礎上按照上述分析的增長方式增加的格子數量 相加即可。
問題解決
根據以上分析可得遞推方程:
T(0)=1
T(n)=T(n-1)+2*(2*n-1)+2
進一步化簡可得:
T(0)=1
T(n)=T(n-1)+4*n
求解遞推方程可得:
T(n)=2*n * (n+1)+1
代碼
//遞推代碼
#include <bits/stdc++.h>
using namespace std;
int fun(int n);
int main()
{
int n;
while(cin>>n)//n是大於等於0的整數,表示圖的序號
{
cout<<fun(n)<<endl;//輸出圖中陰影方格的數量
}
return 0;
}
int fun(int n)
{
int k;
if(n==0)
k=1;
else
k=fun(n-1)+4*n;
return k;
}
//公式代碼
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
while(cin>>n)//n是大於等於0的整數,表示圖的序號
{
cout<<2*n*(n+1)+1<<endl;//輸出圖中陰影方格的數量
}
return 0;
}