难度等级:黄金
codevs1910 递归函数
题目描述 Description

对于一个递归函数w(a, b, c)。

如果a <= 0 or b <= 0 or c <= 0就返回值1。

如果a > 20 or b > 20 or c > 20就返回W(20,20,20)。

如果a < b并且b < c 就返回w(a, b, c − 1) + w(a, b − 1, c − 1) − w(a, b − 1, c),

其它别的情况就返回w(a − 1, b, c) + w(a − 1, b − 1, c) + w(a − 1, b, c − 1) − w(a −1, b - 1, c - 1)

这是个简单的递归函数,但实现起来可能会有些问题。

输入描述 Input Description

会有若干行.每行三个数,表示a, b, c。并以−1, −1, −1结束

输出描述 Output Description

输出若干行,注意各种中的空格。

样例输入 Sample Input

1 1 1
2 2 2
-1 -1 -1

样例输出 Sample Output

w(1, 1, 1) = 2
w(2, 2, 2) = 4

数据范围及提示 Data Size & Hint

a, b, c < 30, Task < 11

这是一道裸的递归转记忆化搜索的问题。

设一个三维数组f[a][b][c],表示w(a,b,c)相应的值。在每次递归之前判断f[a][b][c]是否已经算过一次,若算过直接加上f[a][b][c]的值;若没有算过,则加上递归w(a,b,c)的值,同时把递归结果赋值给f[a][b][c].

本题特别注意输出格式,数字与数字之间有空格,等号与数字之间也有空格。以样例为例:w(1,空格1,空格1)空格=空格2

#include<iostream>
#include<cstdio>
using namespace std;
int aa,bb,cc;
int f[][][];
int w(int a,int b,int c)
{
if(a<=||b<=||c<=) return ;
else if(a>||b>||c>)
{
if(f[][][]) return f[][][];
else return w(,,);
}
else if(a<b&&b<c)
{
int s=;
if(!f[a][b][c-]) f[a][b][c-]=w(a,b,c-);
s+=f[a][b][c-];
if(!f[a][b-][c-]) f[a][b-][c-]=w(a,b-,c-);
s+=f[a][b-][c-];
if(!f[a][b-][c]) f[a][b-][c]=w(a,b-,c);
s-=f[a][b-][c];
return s;
}
else
{
int s=;
if(!f[a-][b][c]) f[a-][b][c]=w(a-,b,c);
s+=f[a-][b][c];
if(!f[a-][b-][c]) f[a-][b-][c]=w(a-,b-,c);
s+=f[a-][b-][c];
if(!f[a-][b][c-]) f[a-][b][c-]=w(a-,b,c-);
s+=f[a-][b][c-];
if(!f[a-][b-][c-]) f[a-][b-][c-]=w(a-,b-,c-);
s-=f[a-][b-][c-];
return s;
}
}
int main()
{
while(cin>>aa>>bb>>cc)
{
if(aa==-&&bb==-&&cc==-) return ;
printf("w(%d, %d, %d) = %d\n",aa,bb,cc,w(aa,bb,cc));
}
}

codevs1910 递归函数的更多相关文章

  1. javascript中的递归函数

    正常的递归函数如下: function factorial(num){ ){ ; }else{ ); } } 这个函数表面看起来还ok,但如果我们执行下面代码就会出错. var jenny = fac ...

  2. JS函数相关及递归函数的使用

    JS函数相关及递归函数的使用 通用js程序: function 函数名(参数列表) { 函数体 } 可使用alert()输出,也可用return返回值. alert与return区别: functio ...

  3. python3--函数(函数,全局变量和局部变量,递归函数)

    1.1函数 1.1.1什么是函数 函数就是程序实现模块化的基本单元,一般实现某一功能的集合.函数名:就相当于是程序代码集合的名称参数:就是函数运算时需要参与运算的值被称作为参数函数体:程序的某个功能, ...

  4. Python之路 day3 递归函数

    #!/usr/bin/env python # -*- coding:utf-8 -*- #Author:ersa """ 在函数内部,可以调用其他函数.如果一个函数在内 ...

  5. Python3学习(二)-递归函数、高级特性、切片

    ##import sys ##sys.setrecursionlimit(1000) ###关键字参数(**关键字参数名) ###与可变参数不同的是,关键字参数可以在调用函数时,传入带有参数名的参数, ...

  6. 浅谈-js递归函数

    所谓的递归函数就是在函数体内调用本函数.使用递归函数一定要注意,处理不当就会进入死循环.递归函数只有在特定的情况下使用 ,比如阶乘问题 下面我们就做一个10以内的阶乘试试看吧: [Ctrl+A 全选 ...

  7. Codevs 1910递归函数

    1910 递归函数  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题目描述 Description 对于一个递归函数w(a, b, c). 如果a <= ...

  8. js中递归函数的使用介绍

    所谓的递归函数就是在函数体内调用本函数.使用递归函数一定要注意,处理不当就会进入死循环.递归函数只有在特定的情况下使用 ,比如阶乘问题 递归函数是在一个函数通过名字调用自身的情况下构成的,如下所示: ...

  9. 【Python】[函数] 函数的参数与递归函数

    一.函数的参数1.位置参数2.默认参数 n就是默认参数 def power(x,n=2): s=1 while n > 0: n = n - 1 s = s * x return s 默认参数有 ...

随机推荐

  1. Java中定义Map常量,List常量

    一般的方式的使用静态代码块.比如: public final static Map map = new HashMap(); static { map.put("key1", &q ...

  2. 学习 HTML5-目录

    1.学习 HTML5-页面结构 2.HTML5标记 3.HTML5机构化语义元素 4.HTML5表单 5.HTML5媒体元素:Audio和Video 6.HTML5绘图API 7.HTML5 Canv ...

  3. 什么是ODBO---OLE DB for OLAP

      我怎么一步一步追到ODBO了?   mondrian核心api->olap4j->jedox也在用olap4j->ODBO? ODBO是什么呢? OLE DB for OLAP ...

  4. MVC中使用SignaIR入门教程

    一.前言:每次写总要说一点最近的感想 进入工作快半年了,昨天是最郁闷的一天,我怀疑我是不是得了"星期一综合征",每个星期一很没有状态.全身都有点酸痛,这个可能一个星期只有周末才打一 ...

  5. 你知道C#中的Lambda表达式的演化过程吗

    你知道C#中的Lambda表达式的演化过程吗? 阅读目录 委托的使用 匿名方法 Func和Action Lambda的诞生 那得从很久很久以前说起了,记得那个时候... 懵懂的记得从前有个叫委托的东西 ...

  6. Apache安装

    记录安装Apache的流程,没有进行详细配置,只是记录搭建服务器的流程用于学习Ajax等知识,方便以后重新安装,不用每次都翻别人博客学习安装了,大神看到这里可以关掉这个粗糙简陋的博文了. 1. 官网上 ...

  7. java 生成和解析二维码

    public class QRCode { /** * 解析二维码(QRCode) * @param imgPath * @return */ public static String decoder ...

  8. HBase应用开发回顾与总结系列之二:RowKey行键设计规范

    2. RowKey行键设计规范 2.1. RowKey四大特性 2.1.1 字符串类型 虽然行键在HBase中是以byte[]字节数组的形式存储的,但是建议在系统开发过程中将其数据类型设置为Strin ...

  9. 烂泥:ESXI开启SNMP服务

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 要监控ESXI,打算通过snmp方式进行监控,这样操作比较简单.但是要使用SNMP方式进行监控,必须要开启ESXI的SNMP服务.ESXI由于版本号的不 ...

  10. linux下文件的特殊权限s和t

    先看看这两个文件的权限:[root@localhost ~]# ls -ld /usr/bin/passwd /tmpdrwxrwxrwt 4 root root 4096 Jun 2 17:33 / ...