zoukankan      html  css  js  c++  java
  • sdut 2176 递归的函数

    记忆化搜索

     1 #include<stdio.h>
     2 #include<string.h>
     3 int f[40][40][40];
     4 
     5 int ji(int a,int b,int c)
     6 {
     7     if(a<=0||b<=0||c<=0)
     8      return 1;
     9 
    10     if(f[a][b][c]>0)
    11     return f[a][b][c];
    12 
    13     else if(a>20||b>20||c>20)
    14     return f[a][b][c]=ji(20,20,20);
    15 
    16     else if(a<b&&b<c)
    17     return f[a][b][c]=ji(a,b,c-1)+ji(a,b-1,c-1)-ji(a,b-1,c);
    18 
    19     else
    20     return f[a][b][c]=ji(a-1,b,c)+ji(a-1,b-1,c)+ji(a-1,b,c-1)-ji(a-1,b-1,c-1);
    21 };
    22 
    23 int main()
    24 {
    25 
    26     int a,b,c;
    27      memset(f,-1,sizeof(f));
    28     while(~scanf("%d%d%d",&a,&b,&c))
    29     {
    30        
    31         printf("%d\n",ji(a,b,c));
    32     }
    33 
    34     return 0;
    35 }
    36  

    if(f[a][b][c]>0)
        return f[a][b][c];

    没计算过的f 是-1;

    如果>0就是计算过了,直接返回,可节省时间

  • 相关阅读:
    webform传值
    webform控件以及使用
    SQL Server 基本数据类型
    数据库设计三大范式
    第一阶段考试
    弹出层
    三级联动日期选择
    DOM例题
    JS方法
    DOM
  • 原文地址:https://www.cnblogs.com/bfshm/p/3111163.html
Copyright © 2011-2022 走看看