【题解】vijos1080 Function(Function(Function(Fu...
来源:互联网 发布:网络的好处 英语作文 编辑:程序博客网 时间:2024/06/18 04:09
vijos1080 函数的函数
题目
原题链接
对于一个递归函数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
算法
- 记忆化搜索
思路
题目最后一段:当a,b,c均为15时,调用的次数将非常的多。你要想个办法才行.
我一看,又是数学?!?!推推推推推,但是看到20,20,20的max时我想——记忆化搜索跑20^3次没问题啊?!
然后想了一下,打了出来,AC
代码
#include<iostream>#include<cstdio>#include<cstring>using namespace std;long long remeber[21][21][21];long long w(int a,int b,int c){ //严格按照题目顺序模拟 if(a<=0 or b<=0 or c<=0) { return 1; } if(a>20 or b>20 or c>20) { a=b=c=20; } if(remeber[a][b][c]!=0) return remeber[a][b][c];//记忆化往后放,不然会RE if(a<b and b<c) { remeber[a][b][c]=w(a,b,c-1)+w(a,b-1,c-1)-w(a,b-1,c); } else { remeber[a][b][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); } return remeber[a][b][c];}int main(){ int a,b,c; cin>>a>>b>>c; while(not(a==-1 and b==-1 and c==-1)) { cout<<"w("<<a<<", "<<b<<", "<<c<<") = "<<w(a,b,c)<<endl; cin>>a>>b>>c; }}
阅读全文
0 0
- 【题解】vijos1080 Function(Function(Function(Fu...
- Function Run Fu
- Function
- function
- function
- function $()
- Function
- function
- Function
- $(function(){...});
- function
- Function
- function
- Function
- function
- (function(){})()
- $(function)
- $(function(){...});
- trick—Data Augmentation
- The Monster (Codefores-787A)
- c++ 优先级队列输出最小值
- A
- centos安装mongodb、GridFS、Nginx
- 【题解】vijos1080 Function(Function(Function(Fu...
- 2017 JS开发指南
- AOP是什么?与OOP的区别,java 动态代理
- Linux所有的窗口关闭图标都消失
- 世界上最好的编程语言(没有绝对)
- 矩阵(加法&&乘法&&快速幂)
- FreeSWITCH核心命令
- mysql学习笔记
- 《C++ primer》第五版 练习7.32 报错:“error C2797: 'Window_mgr::screens': 未执行成员初始值列表内的列表初始化或非静态数据成员初始值”