FtSan


私信TA

用户名:ft1075576

访问量:56889

签 名:

等  级
排  名 120
经  验 7583
参赛次数 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 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区

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] );
        }      
    }
这个环节内,if是多余的,直接一个 printf("%d\n",monther_cow[input[j]]);就可以完事了;
2018-12-03 18:23:00
n=50时,总数是:178955183  惊呆了!
2018-12-03 17:08:56
前面将55年内的数量都算出来了,在主函数里面再if - else判断input[j]<4与否是是多余的?直接输出mother_cow[input[j]]就行。
2018-11-07 10:25:38
请问,为什么第一年不是两头牛啊?
2018-10-29 13:05:32
#include<stdio.h>


int main()
{ int num(int n);

   int n,b;
   scanf("%d",n);
   b=num(n);
   printf("%d",b);
   return 0;
}





int num(int n)
{
	int i[4],b=1,c;
	if(n<5)
	{
	for(b=1;b<n;b++)
	{
		
	    i[b]=b;
		c=i[b];
	}
	}
	else
		c=num(n-1)+num(n-3);
	return(c);
帮我看看这个有啥问题啊大佬
2018-09-26 21:41:15
monther_cow[i] = monther_cow[i - 1] + monther_cow[i - 3]这是什么意思啊
2018-09-20 18:28:43
#include <stdio.h>
#include <stdlib.h>

int main(){
	int CattleN=1;
	int year;
	int i;
	int total = 0;
	scanf("%d",&year);
	for(i=0;i<year;i++){
		if(i/4==CattleN&&i/4!=0)
		{
			CattleN=CattleN+1;
		}
	total=total+1*CattleN;	
	}
	printf("%d",total);
	system("pause");
	
	return 0;
} 
为什么会答案错误啊
2018-09-18 11:29:43
第一年不是有两头牛吗,第二年应该是3头牛啊,这牛厉害了,只生母牛,不生公牛。
哪位大佬帮忙解决一下
2018-09-18 11:05:56