递归问题:Fibonacci序列,分数数列,过河卒,平面分隔问题,棋盘完美覆盖,数字序列

void fibonacci()//fibonacci序列
{
	int n;
	while(scanf("%d",&n))
	{
		if(n<0) break;
		if((n+2)%4==0) printf("Yes\n");
		else printf("No\n");
	}
	return 0;
}

void fractional()//结果有问题
{
		int n,a[2001],b[2001],i,j,flag,temp;
	while(~scanf("%d",&n))
	{
		a[1]=1;
		b[1]=2;
		a[2]=3;
		b[2]=5;
		flag=1;
		for(i=3;i<=n;i++)
		{	
			temp=a[i-1]+1;
			while(1)
			{
				for(j=i-1;j>0;j--)
				{
					if(temp==b[j-1])  {flag=0;break;}
					if(temp>b[j-1]) {flag=1;break;}
				}
				if(flag==0) temp++;
				if(flag==1) {a[i]=temp;break;}
			}
		}
		b[n]=a[n]+n;
		printf("%d/%d\n",a[n],b[n]);
	}
	/*
		int c[2000],d[2000],n,i,j,m,f;
	while(~scanf("%d",&n))
	{
	c[1]=1;
	d[1]=2;
	c[2]=3;
	d[2]=5;
	for(i=3;i<=n;i++)
	{
		m=c[i-1]+1;
		while(1)
		{
			f=0;
			for(j=i-1;j>0;j--)
			{
				if(m==d[j])
				{f=1;break;}
				if(d[j]<m) break;
			}

			if(f==0) {c[i]=m;break;}
			m++;
		}
		d[i]=c[i]+i;
	}
	printf("%d/%d\n",c[n],d[n]);
	}
	return 0;
	*/
}

int guohezu()
{
	int m,n,x,y,i,j,f[20][20];
	while(~scanf("%d %d %d %d",&m,&n,&x,&y))
	{
		for(i=0;i<=m;i++)
		{
			for(j=0;j<=n;j++)
				f[i][j]=0;
		}

		for(i=x;i<=m;i++)
			f[i][y]=1;
		for(j=y;j<=n;j++)
			f[x][j]=1;
		for(i=x+1;i<=m;i++)
		{
			for(j=y+1;j<=n;j++)
				f[i][j]=(f[i-1][j]+f[i][j-1]);
		}
		printf("%d\n",f[m][n]);
	}
	
		return 0;
}

void pingmianfenge()
{
	int num,i,f[1000];
	while(~scanf("%d",&num))
	{
		f[1]=2;
		for(i=2;i<=num;i++)
			f[i]=f[i-1]+2*(i-1);
		printf("%d\n",f[num]);
	}
}

void qipanwanmeifugai()
{
	int n,i,f[42];
	while(~scanf("%d",&n))
	{
		f[1]=1;
		f[2]=2;
		for(i=3;i<=n;i++)
			f[i]=f[i-1]+f[i-2];
		printf("%d\n",f[n]);
	}
	/*
	int n,i,f1,f2,f3;
	while(scanf("%d",&n))
	{
		if(n==0) break;
		f1=1;
		f2=2;
		if(n==1) printf("%d\n",f1);
		else if(n==2) printf("%d\n",f2);
		else
		{
			for(i=3;i<=n;i++)
			{
			f3=f1+f2;
			f1=f2;
			f2=f3;
			}
			printf("%d\n",f3);
		}
	}
	return 0;
	*/
}

int shuzixulie()
{
		int i,j,a,b,f[50],k,m;
	long n;
	while(1)
	{
		f[1]=1;
		f[2]=1;
		m=0;
		scanf("%d %d %ld",&a,&b,&n);
		if(a==0&&b==0&&n==0)
			break;
		for(i=3;i<43;i++)
		{
			f[i]=(a*f[i-1]+b*f[i-2])%7;
			for(j=2;j<i;j++)
				if(f[j-1]==f[i-1]&&f[j]==f[i])
				{
					m=j-1;
					k=i-j;
					break;
				}
				if(m!=0) break;
		}
		if(n<m) printf("%d\n",f[n]);
		else printf("%d\n",f[(n-(m-1))%k+m-1]);
	}
	/*
		int a,b,n,f[50],i;
	while(~scanf("%d%d%d",&a,&b,&n),a!=0&&b!=0&&n!=0)
	{
		f[1]=f[2]=1;
		for(i=3;i<50;i++)
		{
			f[i]=(a*f[i-1]+b*f[i-2])%7;
			if(f[i]==1&&f[i-1]==1)
				break;
		}
		n=n%(i-2);if(n==0)
			printf("%d\n",f[i-2]);
		else
			printf("%d\n",f[n]);
	}
	return 0;
	*/
}

posted @ 2018-03-24 14:53  王雪亮  阅读(166)  评论(0)    收藏  举报