codevs1910 递归函数
对于一个递归函数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)
这是个简单的递归函数,但实现起来可能会有些问题。
会有若干行.每行三个数,表示a, b, c。并以−1, −1, −1结束
输出若干行,注意各种中的空格。
1 1 1
2 2 2
-1 -1 -1
w(1, 1, 1) = 2
w(2, 2, 2) = 4
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 递归函数的更多相关文章
- javascript中的递归函数
正常的递归函数如下: function factorial(num){ ){ ; }else{ ); } } 这个函数表面看起来还ok,但如果我们执行下面代码就会出错. var jenny = fac ...
- JS函数相关及递归函数的使用
JS函数相关及递归函数的使用 通用js程序: function 函数名(参数列表) { 函数体 } 可使用alert()输出,也可用return返回值. alert与return区别: functio ...
- python3--函数(函数,全局变量和局部变量,递归函数)
1.1函数 1.1.1什么是函数 函数就是程序实现模块化的基本单元,一般实现某一功能的集合.函数名:就相当于是程序代码集合的名称参数:就是函数运算时需要参与运算的值被称作为参数函数体:程序的某个功能, ...
- Python之路 day3 递归函数
#!/usr/bin/env python # -*- coding:utf-8 -*- #Author:ersa """ 在函数内部,可以调用其他函数.如果一个函数在内 ...
- Python3学习(二)-递归函数、高级特性、切片
##import sys ##sys.setrecursionlimit(1000) ###关键字参数(**关键字参数名) ###与可变参数不同的是,关键字参数可以在调用函数时,传入带有参数名的参数, ...
- 浅谈-js递归函数
所谓的递归函数就是在函数体内调用本函数.使用递归函数一定要注意,处理不当就会进入死循环.递归函数只有在特定的情况下使用 ,比如阶乘问题 下面我们就做一个10以内的阶乘试试看吧: [Ctrl+A 全选 ...
- Codevs 1910递归函数
1910 递归函数 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 对于一个递归函数w(a, b, c). 如果a <= ...
- js中递归函数的使用介绍
所谓的递归函数就是在函数体内调用本函数.使用递归函数一定要注意,处理不当就会进入死循环.递归函数只有在特定的情况下使用 ,比如阶乘问题 递归函数是在一个函数通过名字调用自身的情况下构成的,如下所示: ...
- 【Python】[函数] 函数的参数与递归函数
一.函数的参数1.位置参数2.默认参数 n就是默认参数 def power(x,n=2): s=1 while n > 0: n = n - 1 s = s * x return s 默认参数有 ...
随机推荐
- 2.1 CMMI2级——7个PA简述
摘要: 阶段式的CMMI没有1级,最开始的级别就是2级.一个处于“无序化”生产的软件公司,要进行过程改进,首要是改进什么呢?2级告诉你,我们需要从计划.计划跟踪.需求管理.采购.度量.配置管理.质量保 ...
- js自执行函数的几种不同写法的比较
经常需要一个函数自执行,可惜这一种写法是错的: function(){alert(1);}(); 原因是前半段“function(){alert(1);}”被当成了函数声明,而不是一个函数表达式,从 ...
- Java Maps的9个常见问题
一般来说,Map是一种由键值对组成的数据结构,其中键(key)在Map中是不能重复的: 本篇文章总结了9个最常见的问题(关于Java Map及其实现类): 出于简单考虑,在代码例子中我将不使用泛型,因 ...
- Android 自定义Application
在android中 自定义Application 常用的作用是1 保存在程序运行中的全局变量 实例:public class GlobalApp extends Application{ privat ...
- SQLServer修改字段类型
Alter table [表名] Alter column [列名] [列类型]
- sql server 常见错误代码15000 - 15999含义解析
错误 15000 - 15999 SQL Server 2008 R2 其他版本 错误 严重性 是否记录事件 说明(消息正文) 15001 16 否 对象 '%ls' 不存在或不是此操作的有效对象. ...
- Android学习笔记之AndroidManifest.xml文件解析(转)
//自已备注: <?xml version="1.0" encoding="utf-8"?>//说明了版本号,字符集 <manifest xm ...
- PCI在linux系统中注册与注销示例
1. pci_driver结构struct pci_driver { struct list_head node; const char *name; const struct pc ...
- Tomcat免安装配置2
Tomcat 是一款优秀的JSP/Servlet容器,最初由SUN开发,后来被贡献给了Apache社区.Tomcat现在的版本已到6.Tomcat6实现了Servlet2.5和JSP2.1规范.针对w ...
- 动手学习TCP:总结和索引
TCP是一个十分复杂的协议,通过前面几篇文章只涉及了TCP协议中一些基本的概念. 虽然说都是一些TCP最基本的概念,但是试验过程中一直在踩坑,例如:TCP flag设置错误,seq.ack号没有计算正 ...