当前位置: 首页 > news >正文

李白打酒加强版--dfs+记忆化搜索

记忆化搜索太强了,加快dfs,介于动归和dfs之间,就是把dfs改成int再用数组存一下,存过的直接读

#include<bits/stdc++.h>
#define inf 100011
using namespace std;
typedef long long ll;
typedef pair<int,int> PII;
int n,m;
ll k=2;
ll an;
int dp[103][103][105];
int  dfs(int n,int m,int k)
{
    if(n==0&&m==1&&k==1)
    {
        return 1;
    }
    if(k<0||n<0||m<0) return 0;
    if(k>m) return 0;
    int w=0,e=0;
    if(dp[n][m][k]!=-1) 
	{
	return dp[n][m][k];	
	}
    for(int i=0;i<2;i++)
    {
        if(!i)
        {
            w=dfs(n-1,m,k*2)%1000000007;
        }else
        {
            if(k>0)e=dfs(n,m-1,k-1)%1000000007;
            else e=0;
        }
    }
    return dp[n][m][k]=(w+e)%1000000007;
    
}
int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    memset(dp,-1,sizeof(dp));
    cin>>n>>m;
    dfs(n,m,k);
    if(dp[n][m][2]!=-1)
    cout<<dp[n][m][2];
    else cout<<0;
    return 0;
}

相关文章:

  • Cursor插件市场打不开解决
  • JMX 和 JAAS 认证
  • 【数据结构】栈和队列
  • 【NLP】 9. 处理创造性词汇 词组特征(Creative Words Features Model), 词袋模型处理未知词,模型得分
  • 3.4 基于TSX的渲染函数类型安全实践
  • Java中的I/O
  • Hive函数大全:从核心内置函数到自定义UDF实战指南(附详细案例与总结)
  • Python中的unittest库
  • Java 并发编程——BIO NIO AIO 概念
  • C语言:基于数组实现栈
  • 如何打包数据库mysql数据,并上传到虚拟机上进行部署?
  • pandas表格内容比较
  • 数据链路层协议
  • 共享内存通信效率碾压管道?System V IPC原理与性能实测
  • 求和23年蓝桥杯省赛
  • go程序运行Spaitalite踩坑记录
  • discuz门户文章允许游客评论
  • 爱普生 SG-8200CG可编程晶振在智能手表的应用
  • pyroSAR:开源的SAR数据处理与分析工具
  • Android Framework 之了解系统启动流程二
  • 350种咖啡主题图书集结上海,20家参展书店买书送咖啡
  • “老中青少”四代同堂,季春艳携锡剧《玲珑女》冲击梅花奖
  • 国台办:民进党当局刻意刁难大陆配偶,这是不折不扣的政治迫害
  • 著名连环画家庞邦本逝世
  • 最美西游、三星堆遗址等入选“2025十大年度IP”
  • 打击网络谣言、共建清朗家园,中国互联网联合辟谣平台2025年4月辟谣榜