对于一个递归函数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>20b>20 or c>20c>20就返回w(20,20,20)w(20,20,20)
  • 如果a<ba<b并且b<cb<c 就返回w(a,b,c-1)+w(a,b-1,c-1)-w(a,b-1,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)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,ca,b,c均为15时,调用的次数将非常的多。你要想个办法才行.

/* absi2011 : 比如 w(30,-1,0)w(30,−1,0)既满足条件1又满足条件2

这种时候我们就按最上面的条件来算

所以答案为1

*/

输入输出格式

输入格式:

会有若干行。

并以-1,-1,-1−1,−1,−1结束。

保证输入的数在[-9223372036854775808,9223372036854775807][−9223372036854775808,9223372036854775807]之间,并且是整数。

输出格式:

输出若干行,每一行格式:

w(a, b, c) = ans

注意空格。

输入输出样例

输入样例#1: 复制

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

输出样例#1: 复制

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

说明

记忆化搜索

思路:根据题意的话,某些情况下递归次数太多,所以要用到记忆化搜索来优化

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
long long s[25][25][25];
long long w(long long a,long long b,long long c)
{
if(a<=0 || b<=0 ||c<=0)
return 1;
else if(s[a][b][c]!=0)
return s[a][b][c];
else if(a>20 || b>20 ||c>20)
return s[a][b][c]=w(20,20,20);
else if(a<b &&b<c)
return s[a][b][c]=w(a,b,c-1)+w(a,b-1,c-1)-w(a,b-1,c);
else
return s[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);
} int main()
{
long long a,b,c;
memset(s,0,sizeof(s));
while(scanf("%lld%lld%lld",&a,&b,&c)!=EOF && (a+b+c)!=-3)
{
printf("w(%lld, %lld, %lld) = ",a,b,c);
if(a>20) a=21;
if(b>20) b=21;
if(c>20) c=21;
long long ans=w(a,b,c);
printf("%lld\n",ans);
}
return 0;
}

最新文章

  1. 用Visual Studio调试Windows和驱动程序
  2. CSS3 垂直居中 左右居中
  3. Easyui Layout Center 全屏方法扩展
  4. jq选择器 第一部分
  5. 基于dojo模板的widget
  6. 关于一次Weblogic活动线程的问题处理
  7. libeXosip2(2-3) -- eXosip2 event API
  8. 高龄“潮男”优衣库老板柳井正_榜样_奢华主义_YOKA时尚网
  9. iOS中Block介绍 基础
  10. javascript6
  11. 借助Chrome和插件爬取数据
  12. MHDD硬盘坏道检测修复教程(转)
  13. 2017 年 机器学习之数据挖据、数据分析,可视化,ML,DL,NLP等知识记录和总结
  14. MySQL复制日常维护与管理
  15. 将AJAX Post的Data转为对应的Class
  16. SpringCloud (十) Hystrix Dashboard单体监控、集群监控、与消息代理结合
  17. [搬运] [贪心]NOIP2011 观光公交
  18. 20155212 2016-2017-2 《Java程序设计》第10周学习总结
  19. CentOS 7运维管理笔记(9)----Apache 安全控制与认证
  20. NUCLEO-L053R8 RCC时钟树 MCO输出

热门文章

  1. MySQL具体解释(15)-----------海量数据解说
  2. NS3网络仿真(5): 数据包分析
  3. React Native布局实践:开发京东client首页(三)——轮播图的实现
  4. cocos2d-x 3.1.1 学习笔记[16] Particle 粒子效果
  5. C#中数据库备份还原 精简
  6. SQL2000数据库定期自动备份与修改
  7. django自带权限控制系统的使用和分析
  8. PCB MS SQL 排序应用---相邻数据且相同合并处理
  9. Shuffle&#39;m Up(串)
  10. python-day4 运算符,if判断, for循环