首页 > 其他分享 >爬天梯 + 放苹果 (记忆化搜索大大优化时间复杂度)

爬天梯 + 放苹果 (记忆化搜索大大优化时间复杂度)

时间:2023-07-08 13:45:18浏览次数:42  
标签:int 复杂度 cin 空盘 苹果 天梯 盘子 ll dp

记忆化搜索

——即把搜过的地方记录下来,后面再搜的时候直接取就好了

 题解:

 1 #include <iostream>
 2 using namespace std;
 3 #define ll long long
 4 const int N = 100;
 5 ll a[N], n;
 6 ll dfs(ll n)
 7 {
 8     if (n <= 1)
 9         return 1;
10 
11     if (!a[n])
12         a[n] = dfs(n - 1) + dfs(n - 2);
13     // 记忆化搜索的核心(这样能减少好多重复代码,防止无用的递归浪费时间)
14 
15     return a[n];
16 }
17 
18 int main()
19 {
20     cin >> n;
21     cout << dfs(n);
22     return 0;
23 }

 

 

 题解1:

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 int m, n;
 4 
 5 int dp(int m, int n)
 6 {
 7     if (n <= 0 && m == 0)
 8         return 1; // 注意退出条件的判断 !!!!!!!!!
 9     if (n <= 0 && m != 0)
10         return 0;
11     if (n > m) // 盘子数大于苹果数,则至少有n - m个空盘子
12         return dp(m, m);
13     else
14         // 否则,则分为两种情况——有空盘子(有空盘子则从1个空盘开始枚举)
15         // 和没有空盘子 (没有空盘即每个盘子先放一个苹果)
16         return dp(m, n - 1) + dp(m - n, n);
17 }
18 
19 int main()
20 {
21     int t;
22     cin >> t;
23     while (t--)
24     {
25         cin >> m >> n;
26         cout << dp(m, n) << endl;
27     }
28 
29     return 0;
30 }

 

题解2(记忆化搜索):

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 const int N = 40;
 4 int m, n;
 5 int a[N][N];
 6 
 7 int dp(int m, int n)
 8 {
 9     if (n <= 0 && m == 0)
10         return 1; // 注意退出条件的判断 !!!!!!!!!
11     if (n <= 0 && m != 0)
12         return 0;
13     if (n > m)
14     { // 盘子数大于苹果数,则至少有n - m个空盘子
15         if (!a[m][m])
16             a[m][m] = dp(m, m);
17         return a[m][m];
18     }
19     else
20     {
21         // 否则,则分为两种情况——有空盘子(有空盘子则从1个空盘开始枚举)
22         // 和没有空盘子 (没有空盘即每个盘子先放一个苹果)
23         if (!a[m][n])
24             a[m][n] = dp(m, n - 1) + dp(m - n, n);
25         return a[m][n];
26     }
27 }
28 
29 int main()
30 {
31     int t;
32     cin >> t;
33     while (t--)
34     {
35         cin >> m >> n;
36         cout << dp(m, n) << endl;
37     }
38 
39     return 0;
40 }

 

标签:int,复杂度,cin,空盘,苹果,天梯,盘子,ll,dp
From: https://www.cnblogs.com/nijigasaki14/p/17537082.html

相关文章

  • 苹果手机丢失如何查找手机位置
    苹果手机丢失想要查找手机位置如何查找?其实不难,苹果手机可以通过查找功能来找到手机位置,查找的渠道有2个:1、手机;2、电脑。1、手机  ①找朋友或家人借一部苹果手机,登录自己的AppleID。完成登录后,在手机桌面打开查找。  ②在查找界面,点击设备。  ③在......
  • 用天梯赛打开暑假生活的第十天
    从坐牢到入门的程序设计(10)开始时间2023-07-04 09:10:02结束时间2023-07-04 21:48:28前言:哎嘿,呜呼!L1-046整除光棍一、题目编号及题目说明二、程序功能测试及说明使用循环来计算一个奇数x的光棍数,其中光棍数定义为只包含数字1且能被x整除的数。三、程序设计思路及......
  • 最详细的解说—时间和空间复杂度
    转载自:https://www.jianshu.com/p/1ac6ad4069f8 算法的选择我们都知道同一个问题有不同的算法解决,这些算法在运行时间、运行占用内存、代码易读性等方面都不相同,而在这些算法中,我们只能选择一种解决方案,这时判断选择哪个算法的依据是什么呢?   在这里,我们引入了时......
  • 一秒教你解决苹果手机wifi变灰色
    https://www.douyin.com/note/7242700916091096352一秒解决苹果手机连不上wifi问题,苹果手机突然连不上wifi,重启手机,还原网络设置都试过了,无线wifi还是灰色,教你方法,打开设置-通用-语言与地区,随便换一个语言,等待连接上wifi,再换回中文即可,学会了吗?  更换iphone语言......
  • JavaScript aglo 算法 时间复杂度
    https://www.bigocheatsheet.com/https://www.hello-algo.com/chapter_preface/about_the_book/ gpt的回答好的,下面给出这些算法的JavaScript例子,并给出它们的时间复杂度分析:O(1)-常数时间复杂度:javascriptCopyCodefunctionconstantTimeAlgorithm(n){return2+......
  • 黑莓年底进军亚洲市场 扩充软件商店对决苹果
    本文发表于2009-10-2009:1210/27/20091:38:47PM据中国台湾《经济日报》报道,黑莓机制造商RIM公司为与苹果iPhone(iPhone玩家论坛)较劲,年底将进军亚洲市场,并提前把旗下网络应用程序商店AppWorld的应用软件,扩大至3,000种以上,以继续吸引消费者。报道援引RIM企业营销部门副总裁麦克道......
  • 环球企业家:苹果与谷歌的圣杯之战
    10/23/200910:10:17PM苹果和谷歌曾以共识塑造了当今的科技业,却将在意见分歧中打开未来本刊记者朱旭冬早有人断言这一天终将到来,只是没有人能想象这一切来得如此仓促。谷歌和苹果当今最富时代精神的两家科技公司、硅谷共同的骄傲、网络时代亲密而互补的一对创新明星几乎在一夜之......
  • 苹果恶搞Windows 7
     本文发表于2009-10-2708:54在WindowsVista败走麦城之后,微软指望着能够通过上周四发布的新操作系统Windows7来恢复自己的形象,苹果却不帮这个忙。苹果公司的新广告没兑现的承诺再一次拿微软开起了玩笑,在其正在进行的拥有Mac推广活动中,苹果加入了一个新的诙谐广告,广告中,贾斯汀......
  • 用天梯赛打开暑假生活的第八天
    从坐牢到入门的程序设计(8)开始时间2023-06-28 19:02:04结束时间2023-06-28 21:24:22前言:今天这一篇也不会发在朋友圈里,一是怕她看到(或许她不会看),二是怕你们又笑话我因为某个女孩伤脑筋...... L1-034点赞一、题目编号及题目说明二、程序功能测试及说明统计输入中的......
  • 苹果开发者账号注册设备异常是怎么回事
    对于近期新续费的,或者新注册的苹果开发者账号,有一些开发人员发现,当在开发者账号里添加了一定数目的设备后,会出现如下的提示信息: Registrationisbeingprocessedforthesedevices.Theymaybecomeavailablefordevelopmentandadhocdistributionin24to72hours.......