递归的函数
来源:互联网 发布:学生打工软件 编辑:程序博客网 时间:2024/04/29 11:53
递归的函数
Time Limit: 1000MS Memory limit: 65536K
题目描述
给定一个函数 f(a, b, c):
如果 a ≤ 0 或 b ≤ 0 或 c ≤ 0 返回值为 1;
如果 a > 20 或 b > 20 或 c > 20 返回值为 f(20, 20, 20);
如果 a < b 并且 b < c 返回 f(a, b, c−1) + f(a, b−1, c−1) − f(a, b−1, c);
其它情况返回 f(a−1, b, c) + f(a−1, b−1, c) + f(a−1, b, c−1) − f(a-1, b-1, c-1)。
看起来简单的一个函数?你能做对吗?
输入
输入包含多组测试数据,对于每组测试数据:
输入只有一行为 3 个整数a, b, c(a, b, c < 30)。
输出
对于每组测试数据,输出函数的计算结果。
示例输入
1 1 12 2 2
示例输出
24
提示
#include <stdio.h>int main(){ int a[30][30][30]; int i, j, k; for(i = 0;i <= 20;i++){ for(j = 0;j <=20;j++){ for(k = 0;k <= 20;k++){ if(i ==0||j==0||k==0){ a[i][j][k] = 1; }else if(i <j &&j < k){ a[i][j][k] = a[i][j][k-1] + a[i][j-1][k-1] - a[i][j-1][k]; }else { a[i][j][k] = a[i-1][j][k] + a[i-1][j-1][k] + a[i-1][j][k-1] - a[i-1][j-1][k-1]; } } } } int x, y, z; while(~scanf("%d %d %d", &x, &y, &z)){ int sum; if(x<=0||y<=0||z<=0){ sum = 1; }else if(x > 20||y>20||z>20){ sum = a[20][20][20]; }else { sum = a[x][y][z]; } printf("%d\n", sum); } return 0;}
0 0
- 递归函数的理解
- 递归函数的学习
- 函数的递归调用
- 函数的递归
- 递归函数的原理
- 递归函数的应用
- 递归函数的应用
- 递归函数的应用
- 函数的递归
- 函数的递归调用
- 函数的递归好比...
- 递归的函数
- 递归的函数
- C + +的递归函数
- 递归的函数
- 函数的递归
- 递归函数的认识
- 函数递归的优缺点
- FR7.1 HSQL数据库连接数不断增长,直至服务宕机的问题。
- C++作业2
- JVMGC——基本垃圾回收算法
- Ubuntu Linux下搭建LAMP服务器环境
- 李彦宏:人工智能不是零和游戏
- 递归的函数
- Java基础之Map总篇
- 20160227.CCPP体系详解(0037天)
- Android Studio : 探索
- 汉诺塔系列1
- 交换两个变量值的三种方法(Java实现)
- Linux 修改系统时间 需要Root权限
- LIST OF TRIBON M3 EXECUTABLES
- UML类图示实例