您的位置:首页 > 其它

iNOC产品部-杨辉三角的变形(第二种方法也可以通过,测试数据太弱,n>10000就会爆的)

2017-06-12 17:59 246 查看
// iNOC产品部-杨辉三角的变形(第二种方法也可以通过,测试数据太弱,n>10000就会爆的)
#include<bits/stdc++.h>
using namespace std;
int F(int n,int k)
{
if(k==1||k==2*n-1)return 1;
if(k<1||k>2*n-1)return 0;
return F(n-1,k)+F(n-1,k-1)+F(n-1,k-2);
}
int main()
{
int n;
while(cin>>n)
{
for(int i=1; i<=2*n-1; i++)
{
if(F(n,i)%2==0)
{
cout<<i<<endl;
break;
}
else if(i==2*n-1)
{
cout<<"-1"<<endl;
}
}
}
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
while(cin>>n)
{
if(n==1||n==2)cout<<"-1"<<endl;
else
{
vector<int>v1;
for(int i=0; i<3; i++) v1.push_back(1);
for(int i=2; i<n; i++)
{
vector<int>v2(v1.size()+2);
v2[0]=1;
v2[1]=i;
v2[v2.size()-1]=1;
v2[v2.size()-2]=i;
for(int j=2; j<=v2.size()-3; j++)
{
int sum=0;
for(int k=0; k<3; k++)
{
sum+=v1[k+j-2];
}
v2[j]=sum;
}
v1.push_back(0);
v1.push_back(0);
for(int m=0; m<v2.size(); m++) v1[m]=v2[m];
}
int i;
for(i=0; i<v1.size(); i++)
{
if(v1[i]%2==0)
{
cout<<i+1<<endl;
break;
}
}
if(i==v1.size())cout<<"-1"<<endl;
}
}
return 0;
}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法
相关文章推荐