这个题目挺有意思的,我主要用了“斐波那契数列”的知识来解答的,但是发现了问题。
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 人评分
int year; int num=0; int num1=0,num2=0; int num3=; scanf("%d",&year); while(year>0) { num++; year--; } if(year>=5) { num1=year-4; num2+=num1; } num3=num+num2; printf("%d",num3); return 0; 这是main函数里面的内容 请问哪里错了
#include<stdio.h> int main() { int n,count[56]={0,1,2,3,4},i=1,j=1; for(i=5;i<56;i++) { count[i]=count[i-1]+count[i-3]; } while(1) { scanf("%d",&n); if(n==0) break; printf("%d\n",count[n]); } return 0; }
escapee 2018-07-23 19:13:03 |
学我啊,简洁点,亏你还是优质题解
第二年应该有三头吧?输出样例为啥是两头?
#include<stdio.h> int main() { int i=0,n=0; scanf(“%d”,&n); if(n<=4) i=n; else { for(i=4,m=2;;m++) i=i+m; } printf(“%d\n”,n); printf(“0”); return 0; } 请问能不能帮我看看这个为什么是编译错误咧
小松松 2019-01-25 18:00:16 |
for循环里有问题
有个疑问,函数void monther_cow2(int n)不是已经把55年的母牛数目都求下来了,为什么主函数最后printf母牛数时还需要if分支呢,直接printf(‘’%d‘’, monther_cow[j]))不行吗
小糖糖 2018-02-03 17:56:32 |
我也这么觉得,但是加上了运行结果没得错。
C语言训练-阶乘和数* (C语言代码)浏览:981 |
C语言训练-数字母 (C语言代码)浏览:582 |
C语言程序设计教程(第三版)课后习题9.8 (Java代码)浏览:1636 |
字符串问题 (C语言代码)浏览:1504 |
哥德巴赫曾猜测 (C语言代码)浏览:2317 |
C语言程序设计教程(第三版)课后习题8.8 (C语言代码)浏览:636 |
C语言程序设计教程(第三版)课后习题9.6 (C语言代码)浏览:372 |
C语言程序设计教程(第三版)课后习题8.4 (C语言代码)浏览:565 |
C语言程序设计教程(第三版)课后习题9.10 (C语言代码)浏览:614 |
求圆的面积 (C语言代码)浏览:657 |
土豆啊土豆 2018-08-23 21:48:09 |
去掉第四行那个‘=’符号
土豆啊土豆 2018-08-23 21:48:22 |
还有其他问题吗