您的位置:首页 > 其它

ZOJ 2771

2014-07-22 11:35 197 查看
<span style="font-family: Arial, Helvetica, sans-serif;">#include <stdio.h></span>
long long a[70]={1,3,6};

int main()
{
int i,j,N;
while(scanf("%d",&N)!=EOF)
{
for(i=0;i<=N;i++)
if(i>2)
{
a[i]=a[i-1]+a[i-2];
for(j=i-2;j>=0;j--)
a[i]+=a[j];
a[i]+=1;
}
printf("%lld\n",a
);
}
return 0;
}
//上面通过dp找了递推式

//以下是超时的代码,灵感来自于这段代码

#include <iostream>
#include <cmath>
#include <string.h>
#include <cstdio>
using namespace std;
int N;int Road;
void SS(int n,int i,bool flag)
{
if(n==N)  { Road++; return;}
n++;
if(flag)
{
i++;
for(;i<=4;i++)  SS(n,i,false);
}
else
{
i--;
for(;i>=1;i--) SS(n,i,true);
}
}
int main()
{
int i,k;
while(scanf("%d",&N)!=EOF)
{
Road=0;k=1;
if(N==0) cout<<"1"<<endl;
else
{
SS(0,1,true);
cout<<Road<<endl;
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: