1396. wwww

☆   输入文件:wwww.in   输出文件:wwww.out   简单对比
时间限制:1 s   内存限制:256 MB

【题目描述】

对于一个递归函数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的值会使函数运行时间无法忍受。

【输入格式】

输入文件有n+1(0<=n<=10000)行,第i(1<=i<=n)行有三个整数ai,bi,ci(保证在pascal的longint 或 C/C++的long范围内)。

第n+1行必定是-1 -1 -1(同时保证其他行不会是-1 -1 -1)。

【输出格式】

输出文件有n行,第i行输出w(ai,bi,ci)的值(保证在pascal的int64 或 C/C++的long long范围内)。

【样例输入】

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

【样例输出】

2
4

【提示】

输出的第一行是w(1,1,1),输出的第2行是w(2,2,2)。

【来源】

题目提供者邮箱:darkgodz@qq.com

(感谢题目提供者对COGS评测系统的支持)

思路:题目已经提示的很明显了,别忘了加上记忆化。

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int a,b,c;
int f[][][];
int w(int a,int b,int c){
if(a<=||b<=||c<=){ return ; }
if(a>||b>||c>){ return(w(,,)); }
if(f[a][b][c]>) return(f[a][b][c]);
if(a<b && b<c){ f[a][b][c]=w(a,b,c-)+w(a,b-,c-)-w(a,b-,c); return(f[a][b][c]); }
f[a][b][c]=w(a-,b,c)+w(a-,b-,c)+w(a-,b,c-)-w(a-,b-,c-);
return(f[a][b][c]);
}
int main(){
freopen("wwww.in","r",stdin);
freopen("wwww.out","w",stdout);
while(scanf("%d%d%d",&a,&b,&c)){
if(a==-&&b==-&&c==-) return ;
printf("%d\n",w(a,b,c));
}
}

最新文章

  1. qt之串口
  2. [BZOJ1116][Poi2008]LCO(并查集)
  3. Python学习笔记08
  4. C++头文件的组织
  5. python---Memcached
  6. C代码中如何调用C++ C++中如何调用C
  7. [MySQL]导入导出
  8. 仿百度搜索(AJAX)
  9. TFS 2010 使用手册(四)备份与恢复
  10. sre_constants.error: unbalanced parenthesis
  11. 利用Highcharts制作web图表学习(二)
  12. Nginx缓存解决方案:SRCache
  13. Java中byte转int的方法
  14. Excel 导入 Mysql
  15. PMP:8.项目质量管理
  16. MySQL----数据库练习
  17. Leetcode刷题第004天
  18. Codefoces Gym 101652 【最大连续和】
  19. 【Java】基本I/O的学习总结
  20. kafka相关命令

热门文章

  1. 由动态库文件dll生成lib库文件
  2. nodejs02---demo
  3. Idea的一些调试技巧及设置todo
  4. 【DotNetNuke介绍】
  5. Spring 注解拦截器使用详解
  6. PostgreSQL Replication之第四章 设置异步复制(4)
  7. Python开发注意事项
  8. error_reporting()函数
  9. 测试cnblog文章内部JS
  10. HDU-1069 Monkey and Banana DAG上的动态规划