FtSan


私信TA

用户名:ft1075576

访问量:56797

签 名:

等  级
排  名 120
经  验 7574
参赛次数 0
文章发表 24
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

这个题目挺有意思的,我主要用了“斐波那契数列”的知识来解答的,但是发现了问题。

1、我用了函数递归来解题,导致时间超时,问题是由于每次解答一题要递归好几次。

2、题目中的 0<n<55头牛的条件没用上,所以换个思路,先循环一次把到55头牛在斐波那契数列中的排列记录下来,之后解题时候调用数列就快了很多。

结果在网页编译通过,答题正确。

#include<stdio.h>
#define N 55
int monther_cow[N];
void monther_cow2(int n);

int main()
{
   int input[N];
   monther_cow2(N);
   int i = 0;
	do
	{
		scanf("%d",&input[i]);
	}while(input[i++] != 0);

	for(int j = 0 ; j < i-1 ; j++)
	{
		if( input[j] < 4)
		{
			printf("%d\n",monther_cow[input[j]]);
		}
		
		else
		{
			printf("%d\n",monther_cow[input[j] - 1] + monther_cow[input[j] - 3] );
		}		
	}
    return 0;
}

void monther_cow2(int n)//记录的斐波那契数列中对应的规律到数列
{
	int i;
	for(i = 1 ; i <= n ; i++)
	{
		if( i < 4)
		{
			monther_cow[i] = i;
		}
		else
		{
			monther_cow[i] = monther_cow[i - 1] + monther_cow[i - 3];
		}
	   
	}
}


 

0.0分

179 人评分

  评论区

求助,不知为何是错的

#include<stdio.h>

int add(int n)
{
	if(n<=4)
		return n;
	else
		return (add(n-1)+add(n-3));
}

void main()
{
	int n,sum;
	scanf("%d",&n);
	sum=add(n);
	printf("%d",sum);
}
2019-11-11 20:16:39
#include <stdio.h>

int main(int argc, const char * argv[]) {
    int a[60];
    int year=1;
    while(year!=0)
    {
    scanf("%d",&year);
    for(int i=1;i<4;i++)
        a[i]=i;
    for(int i=4;i<=year;i++)
        a[i]=a[i-1]+a[i-3];
        printf("%d\n",a[year]);
    }
}
有没有大佬帮我看看哪里错了 跪谢
2019-10-23 22:19:33
#include<stdio.h>
int milk(int n)
{
    int sum;
    sum=0;
    if(n>4)
    sum=n+milk(n-4);
    else
        sum+=n;
    return sum;
}

int main()
{
    int a;
    while(~scanf("%d", &a))
    {
        if(a!=0)
        {
            printf("%d\n",milk(a));
        }
        else
            break;
    }
    return 0;
}
我的哪错了;说错了一半
2019-10-07 11:15:59
666好方法
2019-10-01 20:48:42
#include<stdio.h>
int F(n)
{
	if(n<=3)
	return n;
	else
	return F(n-1)+F(n-3);
}
int main()
{
	int n;
	while(scanf("%d",&n))
	{
	F(n);
	printf("%d ",F(n));
	}
	return 0;
}
//大家看看有没有什么不严谨的地方
2019-07-30 16:50:29
题解有误,本地运行不出结果
2019-06-16 21:32:48
#include<stdio.h>

int memo[100];

int F(int n)
{
	if (n <= 3)
	{
		return n;
	}
	if (memo[n])
	{
		return memo[n];
	}
	else
	{
		return memo[n] = F(n - 1) + F(n - 3);
	}
	
}

int main()
{
    int a,b;
    while(scanf("%d", &a), a)
	{
		b = F(a);
		printf("%d\n", b);
	}
    return 0;
}
2019-06-12 22:20:17
#include<stdio.h>
int rec(int n)
{
	int res=n;
	int i;
	if(n>4)
	{
	res=rec(n-1)+rec(n-3);
	} 
	return res;
}
int main()
{
	int n,res;
	while(n!=0)
	{
	scanf("%d",&n);
	if(n<=4&&n>0)
	printf("%d\n",n);
	else if(n>4&&n<55)
	{res=rec(n);
	printf("%d\n",res);
	}
	else
	return 0;
	}	
}

想请问一下,我这个错在哪里,为什么不对呢?
2019-06-07 23:55:15