目录
牛客_杨辉三角的变形
解析代码
牛客_杨辉三角的变形
杨辉三角的变形_牛客题霸_牛客网
解析代码
这题通过的代码首找规律的代码:(在下面还贴了普通思路,但超过内存限制的代码)
观察分析如果n % 2 == 1则该行的第一个偶数的位置是2;如果n % 4 == 2则该行的第一个偶数的位置是4;如果n % 2 == 0则该行的第一个偶数的位置是3。
#include <iostream>
using namespace std;
int main()
{int n = 0;cin >> n;if (n <= 2)cout << -1;else if (n % 4 == 1 || n % 4 == 3)cout << 2;else if (n % 4 == 2)cout << 4;elsecout << 3;return 0;
}
以下是超出内存限制的代码:
#include <iostream>
#include <vector>
using namespace std;
int main()
{int n = 0;cin >> n;vector<vector<int>> vv(n);for (int i = 0; i < n; ++i){vector<int> tmp(i + 1, 1);vv[i] = tmp;}for (int i = 2; i < n; ++i){for (int j = 1; j < i + 1; ++j) // 只需填到中间{if (j == 1) // 第二列vv[i][j] = vv[i - 1][j] + vv[i - 1][j - 1];else if (j == i) // 最后中间列(最后一列)vv[i][j] = vv[i - 1][j - 1] + vv[i - 1][j - 2] * 2;elsevv[i][j] = vv[i - 1][j] + vv[i - 1][j - 1] + vv[i - 1][j - 2];}}// for(int i = 0; i < n; ++i)// {// for(int j = 0; j < vv[i].size(); ++j)// {// cout << vv[i][j] << ' ';// }// cout << endl;// }int len = vv[n - 1].size();for (int i = n - 1, j = 1; j < len; ++j){if (vv[i][j] % 2 == 0){cout << j + 1;return 0;}}cout << -1;return 0;
}