題目鏈接:
https://www.nowcoder.com/practice/8ef655edf42d4e08b44be4d777edbf43?tpId=37&&tqId=21276&rp=1&ru
題目解析:
拿到這道題大多數人的第一反應都是先將楊輝三角用一個二維數組表示出來,然後直接在第n行找就可以了,這樣的方法是最直接的,但不是最高效的,雖然我一開始也是這樣做的,但是我將楊輝三角打印出來發現他事有規律可找的:
第1、2行沒有偶數
第3行開始奇數行第一個偶數是第2個數,偶數行則是第3個數
特別注意的是,有三個特殊情況,就是在66、94、118這三行中是第4個數
這樣一分析,代碼也就出來了。
圖解分析:
代碼解析:
#include <iostream>
using namespace std;
int main()
{
int n;
while(cin >> n)
{
if(n == 1 || n == 2)
cout << -1 << endl;
else if(n%2 == 1)
cout << 2 << endl;
else if(n == 66 || n == 118 || n == 94)
cout << 4 << endl;
else if(n%2 == 0)
cout << 3 << endl;
}
return 0;
}