【问题描述】
自定义函数w(a,b,c)。
如果 a ≤ 0 或b ≤ 0 或 c ≤ 0, 则返回结果: 1; 
如果 a > 20 或 b > 20 或 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 1
2 2 2
10 4 6
50 50 50
-1 7 18
-1 -1 -1
【输出样例1】
2
4
523
1048576
1



//AC
//POJ 1579
#include<iostream>
#include<algorithm>
#include<set>
#include<cstring>
#include<queue>
#include<stack>
#include<vector>
#include<stdio.h>
using namespace std;
#define ll long long
ll num[25][25][25];ll f(int a,int b,int c)
{if(num[a][b][c]!=-1)return num[a][b][c];if(a<=0 || b<=0 || c<=0) {num[a][b][c]=1;return 1;}else if( a>20 || b>20 || c>20 ){ll res=f(20,20,20);num[a][b][c]=res;return res;}else if(a<b && b<c){ll res=f(a,b,c-1)+f(a,b-1,c-1) -f(a,b-1,c);num[a][b][c]=res;return res;}else{ll res=f(a-1,b,c)+f(a-1,b-1,c)+f(a-1,b,c-1)-f(a-1,b-1,c-1);num[a][b][c]=res;return res;}
}int main()
{int a,b,c;while(scanf("%d%d%d",&a,&b,&c)!=EOF){memset(num,-1,sizeof(num));if(a==-1 && b==-1 && c==-1)return 0;ll ans;//注意使用数组的条件啊 if(a<=0 || b<=0 || c<=0)ans=1;else if(a>20 || b>20 || c>20)ans=f(20,20,20);elseans=f(a,b,c);printf("w(%d, %d, %d) = %lld\n",a,b,c,ans);}return 0;
}

POJ 1579 记忆化搜索相关推荐

  1. poj 1088(记忆化搜索)

    滑雪 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 88560   Accepted: 33212 Description ...

  2. POJ 1189 记忆化搜索

    钉子和小球 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 7218   Accepted: 2164 Description ...

  3. poj 1085 Triangle War 博弈论+记忆化搜索

    思路:总共有18条边,9个三角形. 极大极小化搜索+剪枝比较慢,所以用记忆化搜索!! 用state存放当前的加边后的状态,并判断是否构成三角形,找出最优解. 代码如下: 1 #include<i ...

  4. 记忆化搜索例题 记忆化搜索

    1.poj  1579 题目链接: http://poj.org/problem?id=1579 代码如下: #include <cstdio> #include <cstring& ...

  5. pku 1191 棋盘分割 DP / 记忆化搜索

    http://poj.org/problem?id=1191 题意:中文省略. 思路:黑说p116有讲解, 主要的状态转移方程为 横着切: dp[k][x1][y1][x2][y2]  = min(d ...

  6. 博弈论(2)DP/记忆化搜索

    博弈问题的话,假设两个人都极度聪明,都会采取最优策略,那么就是也知道了对方也和自己一样聪明,我采取最优策略后,对方也会根据当前状态做出最优策略,简而言之,就是每个玩家都从第一步棋看到了最后一步棋. 先 ...

  7. 2020.9.9华为笔试记忆:KMP+记忆化搜索+字典树

    2020.9.9华为笔试 当然,出现在我博客中的笔试都不是我自己的笔试(人家也不给我发笔试链接,小声bibi,诶,好像我也没投,hhhahahha 记者:为什么要做笔试? 我:生活无聊了喏,肯定要做啊 ...

  8. 搜索问题之状态空间搜索(状态压缩+记忆化搜索+ BFS)

    文章目录 1. 前言 2. 问题举例(九宫格问题) 3. 问题分析 3.1 状态编码与解码 3.2 哈希映射 3.3 集合判重 4. 问题实现 推荐阅读 1. 前言 之前介绍的回溯法常用于 解空间的搜 ...

  9. 洛谷P1057 传球游戏(记忆化搜索)

    点我进入题目 题目大意:n个小孩围一圈传球,每个人可以给左边的人或右边的人传球,1号小孩开始,一共传m次,请问有多少种可能的路径使球回到1号小孩. 输入输出:输入n,m,输出路径的数量. 数据范围:4 ...

最新文章

  1. L1-044 稳赢 (暴力法)
  2. java webdriver page object_Selenium+PageObject+Java实现测试用例
  3. Discuz验证码识别(上线篇)-写给程序员的TensorFlow教程
  4. leetcode two sum python_LeetCode专题-Python实现之第1题:Two Sum
  5. 字符串队列c语言,C语言实现循环队列(队列可存储字符串)
  6. java 获取打印机缺纸_JAVASE 语言概述和JAVA
  7. 用jquery写一个属于自己的音乐播放器
  8. 堆和栈的概念和区别 python_堆的意思
  9. 【干货】联邦学习在腾讯微视广告投放中的实践
  10. JavaScript 简介 1
  11. HTTP状态代码列表
  12. python消费kafka逻辑处理导致cpu升高_Kafka 消费迟滞监控工具 Burrow
  13. Java项目权威排名:Nacos未上版,gradle排名第二,Maven排名28
  14. QQ邮箱自动登录问题--frame嵌套元素定位
  15. 计算机网络技术与实验清华大学,清华大学计算机网络实验指示书.doc
  16. 徐俊明《图论及其应用》教学大纲
  17. 5e检索服务器信息,服务器检索 - 找服玩|Minecraft服务器列表
  18. 泰坦尼克 (有剧透)
  19. Python自动化 | 通过键盘控制鼠标来玩赛尔号
  20. 华为各类工程师通信基础面试题目及答案

热门文章

  1. 数据可视化大屏案例 总目录
  2. SkinLoad程序界面换肤工具
  3. 毕业答辩PPT模板-精选88套
  4. 武汉理工计算机网络考试,武汉理工大学计算机网络试题及答案.doc
  5. Android逆向笔记(二) -- 破解AutoR的注册码验证
  6. 继电器, 接触器,干簧管,弱电控制强电
  7. U蛋非VIP关闭115微门户资讯方法
  8. 计算机网络sequence number,TCP协议中SequenceNumber和Ack Numbe
  9. 第二十章 使用系统监视器 - 定义系统监视器组件
  10. c语言程序设计考试看什么书,(全国计算机等级考试二级C语言程序设计)应该买哪些参考书?...