Function

   简   单   的   递   归

这道题一开始十分智障地用递归做,虽然知道没那么简单,但还是冒着送死的心态交了一遍,果然,如我所料

样例输入:


密密麻麻,几万行的样例输入

//:)你家电脑递归不超时才怪

那,我们该怎么办呢?

我们想一下,如果用一个数组存放它的所有结果,每次只需要调用数组中的元素

类似这样:

return rpt[a][b][c];

其他的则是:

rpt[a][b][c]=w(20,20,20);

最后会将每一个都存起来,就能节省很多的时间

所谓记忆化搜索,就是让程序实现自动记忆已经搜索过的东西,这样如果再次搜到这个东西,就可以直接调用了。

就是把你算过的结果保存下来到数组中,下次发现数组里有这个元素是直接提取数组中的元素即可,由于这是递归,而递归的递归的递归的…的递归知道了,那递归的递归的…也知道了,这样就可以省去很多时间!

代码:

#include <bits/stdc++.h>
using namespace std;
long long rpt[][][];//三维数组
long long w(long long a,long long b,long long c)
{
if(a<=||b<=||c<=) return ;
else if(rpt[a][b][c]!=) return rpt[a][b][c];
else if(a>||b>||c>) rpt[a][b][c]=w(,,);
else if(a<b&&b<c) rpt[a][b][c]=w(a,b,c-)+w(a,b-,c-)-w(a,b-,c);
else rpt[a][b][c]=w(a-,b,c)+w(a-,b-,c)+w(a-,b,c-)-w(a-,b-,c-);
return rpt[a][b][c];
}
int main()
{
long long a,b,c;
while(scanf("%lld%lld%lld",&a,&b,&c)==){
if(a==-&&b==-&&c==-) break;
printf("w(%lld, %lld, %lld) = ",a,b,c);
if(a>) a=;
if(b>) b=;
if(c>) c=;
printf("%lld\n",w(a,b,c));
}
return ;
}

谢谢大家

P1464 Function的更多相关文章

  1. 洛谷P1464 Function  HDU P1579 Function Run Fun

    洛谷P1464 Function HDU P1579 Function Run Fun 题目描述 对于一个递归函数w(a,b,c) 如果a≤0 or b≤0 or c≤0就返回值11. 如果a> ...

  2. (水题)洛谷 - P1464 - Function

    https://www.luogu.org/problemnew/show/P1464 #include<bits/stdc++.h> using namespace std; #defi ...

  3. 记忆化搜索 P1464 Function

    题目描述 对于一个递归函数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< ...

  4. 洛谷 P1464 Function【记忆化搜索】

    题目链接 题目描述 对于一个递归函数w(a,b,c) 如果a<=0 or b<=0 or c<=0就返回值1. 如果a>20 or b>20 or c>20就返回w ...

  5. 洛谷 P1464 Function【动态规划(递推)/记忆化搜索(递归)】

    题目描述 对于一个递归函数w(a,b,c) 如果a<=0 or b<=0 or c<=0就返回值1. 如果a>20 or b>20 or c>20就返回w(20,2 ...

  6. 洛谷 P1464 Function

    题目描述 对于一个递归函数w(a,b,c) 如果a<=0 or b<=0 or c<=0就返回值1. 如果a>20 or b>20 or c>20就返回w(20,2 ...

  7. P1464 Function 洛谷

    https://www.luogu.org/problem/show?pid=1464 题目描述 对于一个递归函数w(a,b,c) 如果a<=0 or b<=0 or c<=0就返回 ...

  8. 洛谷P1464 Function

    对于一个递归函数w(a,b,c)w(a,b,c) 如果a \le 0a≤0 or b \le 0b≤0 or c \le 0c≤0就返回值11. 如果a>20a>20 or b>20 ...

  9. 【做题笔记】洛谷P1464 Function

    我先谔谔一波 /kk 我谔谔 看题第一眼:欸这不就是按题意递归嘛,,直接搞不就好了 3 min 后,重新看题 然后自己手玩了几个样例,噢,递归太多了,铁定会 T 啊...... 然后,作为一个从没写过 ...

随机推荐

  1. 在Fedora中安装OpenCV-Python | 二

    目标 在本教程中 我们将学习在你的Fedora系统中设置OpenCV-Python.针对Fedora 18(64位)和Fedora 19(32位)进行以下步骤. 介绍 可以通过两种方式在Fedora中 ...

  2. HDU - 1503 最长公共子序列记录路径

    题意:先给两个水果的名字然后得出一个最短的序列包含这两个词. 思路:我一开始的思路是先求出最长公共子序列,然后做一些处理将其他的部分输出来:两种水果的字符串和最长公共子序列的字符串这三个字符串做对比, ...

  3. python3读取excel

    说明 2007版以前的Excel(xls结尾的),需要使用xlrd读,xlwt写. 2007版以后的Excel(xlsx结尾的),需要使用openpyxl来读写. pypi的地址: https://p ...

  4. 树莓派 Raspberry PI基础

    树莓派 Raspberry PI基础 官网网址:https://www.raspberrypi.org 下载地址:https://www.raspberrypi.org/downloads/ 官方系统 ...

  5. qt creator源码全方面分析(3-8)

    目录 项目文件工作流程 多层目录模式 依赖解析模式 包含,链接和输出 包含 链接 输出 构建目录架构 项目文件工作流程 我们在前面已经讨论了所有的项目文件, qtcreator.pro qtcreat ...

  6. Javascript/Jquery遇到字符串自动NaN的问题

    结果发现是一个id绑定了两次点击事件.修改之后,问题解决.

  7. 6L-单向链表实现

    关注公众号 MageByte,有你想要的精彩内容.文中涉及的代码可访问 GitHub:https://github.com/UniqueDong/algorithms.git 上一篇<链表导论心 ...

  8. 1089 Insert or Merge (25分)

    According to Wikipedia: Insertion sort iterates, consuming one input element each repetition, and gr ...

  9. python--匿名函数、文件操作

    一.匿名函数 语法: sum = lambda arg1, arg2: arg1 + arg2 #调用sum函数 print "Value of total : ", sum( 1 ...

  10. Serverless无服务器云函数入门唠叨

    B站录了个视频: https://www.bilibili.com/video/av59020925/