这个题目挺有意思的,我主要用了“斐波那契数列”的知识来解答的,但是发现了问题。
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); }
#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]); } } 有没有大佬帮我看看哪里错了 跪谢
junzilan 2019-11-05 09:08:39 |
n=0时你处理了,题目要求不做处理
#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; } 我的哪错了;说错了一半
#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; } //大家看看有没有什么不严谨的地方
#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; }
#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-10-31 10:26:35 |
n没有初始化
C语言程序设计教程(第三版)课后习题10.7 (C语言代码)scanf后面加个getchar(),收掉回车符,就可以用gets了浏览:1140 |
C语言程序设计教程(第三版)课后习题7.5 (C语言代码)浏览:538 |
不知道哪里错了浏览:1140 |
C语言考试练习题_排列 (C语言代码)浏览:1315 |
C语言训练-大、小写问题 (C语言代码)浏览:2349 |
A+B for Input-Output Practice (IV) (C++代码)浏览:676 |
【亲和数】 (C语言代码)浏览:852 |
Wu-求圆的面积 (C++代码)浏览:1883 |
【计算球体积】 (C语言代码)浏览:1101 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:262 |
小菜给您拜年啦 2019-11-12 19:45:32 |
你的格式不对啊 输出要换行的 而且输入的数据要连续输入