题解 | #杨辉三角的变形#不取巧C++解法
杨辉三角的变形
http://www.nowcoder.com/practice/8ef655edf42d4e08b44be4d777edbf43
#include<bits/stdc++.h> using namespace std; int main() { int n; while(cin>>n) { vector<vector<int>> v(n,vector<int>(2*n-1,0)); v[0][n-1]=v[n-1][0]=v[n-1][2*n-2]=1; //杨辉三角的顶角和两个底角比较特殊为1 for(int i=1;i<n;i++) //第一行特殊处理,所以i从1开始 for(int j=1;j<2*n-2;j++) //最后一行两个底角特殊处理,所以j从1开始,且到2*n-2 { v[i][j]=v[i-1][j-1]+v[i-1][j]+v[i-1][j+1]; } for(int j=0;j<2*n-1;j++) { if(v[n-1][j]!=0&&v[n-1][j]%2==0) //如果有偶数的情况 { cout<<j+1<<endl; break; } if(j>n-1&&v[n-1][j]==1) //如果超过每行的一半,还等于1,说明到结尾了都没有偶数 { cout<<-1<<endl; break; } } } }