8 条题解
-
0
可以用递归加数组储存,记忆化处理 #include <stdio.h> int arr[50]; int ad(int x){ if(x0){ return 0; } if(x1){ return 1; } if(arr[x]!=0){ return arr[x]; } arr[x]=ad(x-1)+ad(x-2); return arr[x]; } int main() { int n; scanf("%d",&n); for(int i=0;i<n;i++){ int m; scanf("%d",&m); if(m==1){ printf("0\n"); }else{ printf("%d\n",ad(m)); } } return 0; }
-
0
//递归解法,用数组存结果防止重复运算爆内存 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> int arr[100]; int f(int m) { if (arr[m] != 0) { return arr[m]; } else if (m == 1) { return 0; } else if (m == 2) { return 1; } else if (m == 3) { return 2; } else { return (arr[m - 1] = f(m - 1)) + (arr[m - 2] = f(m - 2)); } }
int main() { int n; scanf("%d", &n); while (n--) { int m; scanf("%d", &m); printf("%d\n", f(m)); } return 0; }
- 1
信息
- ID
- 153
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 7
- 标签
- (无)
- 递交数
- 1033
- 已通过
- 266
- 上传者