FtSan


私信TA

用户名:ft1075576

访问量:56836

签 名:

等  级
排  名 120
经  验 7578
参赛次数 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编程助手,随时响应你的问题:

编程语言转换

万能编程问答

代码解释器

  评论区

递归,计算第N年母牛的函数,可参考一下:
int CountCow(int n)
{
	if(n<0) return 0;
	else if(n>0&&n<=4) return n;
	else return (n-3)+CountCow(n-1);
}
2020-01-16 11:48:46
#include"stdio.h" 

int main()
{
	int n;
	while(scanf("%d",&n)){
		int i=0;
		int a[55];
		for(i=0;i<n;i++){
			if(i<4){
				a[i]=i+1;
			}
			else{
				a[i]=a[i-1]+a[i-3];
			}
		}
		printf("%d\n",a[i-1]);
	}
    return 0;
}

我哪里有错吗?
2019-12-23 19:04:33
用VS2019本地调试, 断点打在main里的for那, 结果程序死循环, 不到那
拿去网页提交结果通过
搞不懂
2019-12-21 23:38:32
#include <stdio.h>
int fun(int year){
	int num;
	if(year <= 4){
		num = year; 
	}
	else{
		num = fun(year - 1) + fun(year - 3);
	}
	return num;
}


int main(){
	int year,num;
	while(scanf("%d",&year) != EOF)
	{
		num = fun(year);
		if(year == 0)
		return 0;
		else
		printf("%d\n",num);
	}	

	return 0;
} 
蓝桥杯都是多组数据,不知道的可以去看看规则。
2019-12-12 14:44:03
题解输出的时候不用再判断是否大于4了,子函数全算过了。
2019-11-22 17:49:34
也没说有多少组数据。。怎么定义数组下标啊
2019-11-21 21:42:34
求助这个为什么是错的
#include <stdio.h>
#include <stdlib.h>
void main (void)
{ 
  int  n ,m,b;

scanf("%d(0-55)",&n);
if(n<5)
	if(n<1)
		exit(0);
	else
for(b=0,m=0;b<n;b++)
 { 
   m=m+1;
}
else 
for(b=4,m=5;b<n;b++)
{ 
	m=m+b-3;
}
printf("在第%d年的时候母牛的数量是%d",n,m);


}
2019-11-14 12:06:43
#include <stdio.h>
#include <stdlib.h>
void main (void)
{ 
  int  n ,m,b;

scanf("%d(0-55)",&n);
if(n<5)
	if(n<1)
		exit(0);
	else
for(b=0,m=0;b<n;b++)
 { 
   m=m+1;
}
else 
for(b=4,m=5;b<n;b++)
{ 
	m=m+b-3;
}
printf("在第%d年的时候母牛的数量是%d",n,m);


}
2019-11-14 12:06:16