藍橋杯算法心得——李白打酒(加強版)

大家好,我是晴天學長,記憶化搜索,找到技巧非常重要,需要的小伙伴可以關注支持一下哦!后續會繼續更新的。💪💪💪

在這里插入圖片描述

2) .算法思路

1.memo三維表示記錄的結果


3).算法步驟

1.首先導入需要的類和包,包括 java.util.Scanner。
2.創建一個公共類 Main。
3.聲明一個靜態變量 mod 并初始化為 1000000007,用于取模操作。
4.聲明一個三維數組 memo,用于存儲中間計算結果。
5.在 main 方法中,創建一個 Scanner 對象來讀取輸入。
6.通過 scanner.nextInt() 方法分別讀取輸入的 N 和 M 的值。
7.初始化變量 sum 為 2。
8.創建大小為 101x101x101 的 memo 數組,并將其所有元素初始化為 -1。
9.調用 dfs 方法,并將 sum、N 和 M 作為參數傳遞給它。
10.在控制臺打印輸出 dfs 方法的返回值。
11.定義 dfs 方法,接收 sum、N 和 M 作為參數。
12.首先進行遞歸終止條件的判斷,如果 sum 等于 1,N 等于 0,M 等于 1,返回 1。
13.進行剪枝操作,如果 sum 小于 0,N 小于 0 或 M 小于 0,返回 0。
14.如果 sum 大于 M,返回 0。
15.檢查 memo[sum][N][M] 是否已經計算過,如果有值,則直接返回該值。
16.如果沒有計算過,進行遞歸計算并將結果保存到 memo 數組中。
17.遞歸調用 dfs 方法,傳入 sum*2、N-1 和 M 作為新的參數,并將結果與遞歸調用 dfs 方法,傳入 18.sum-N 和 M-1 作為新的參數的結果相加,并對 mod 取模。
19.將結果保存到 memo 數組中,并返回該值。


4). 代碼實例

import java.util.Scanner;public class Main {static int mod = 1000000007;static int[][][] memo;public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int N = scanner.nextInt();int M = scanner.nextInt();int sum = 2;memo = new int[101][101][101];for (int i = 0; i < 101; i++) {for (int j = 0; j < 101; j++) {for (int k = 0; k < 101; k++) {memo[i][j][k] = -1; // 初始化dp數組為-1}}}System.out.println(dfs(sum, N, M));}//口枝葉回//酒喝光了遇到店是合法的,最后一次是定了的private static int dfs(int sum ,int N,int M) {if (sum==1&&N==0&&M==1) {return 1;}//剪枝if (sum<0||N<0||M<0) {return 0;}if (sum > M) return 0;if (memo[sum][N][M]!=-1) {return memo[sum][N][M];}memo[sum][N][M]=(dfs(sum*2, N-1, M)+dfs(sum-1, N,M-1))%mod;return memo[sum][N][M];}
}

5). 總結

  • dp和記憶化搜索的熟練掌握。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/16199.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/16199.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/16199.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

slint esp32 tokio

源碼&#xff1a;https://github.com/xiaguangbo/slint_esp32_tokio cpu 是 esp32c2&#xff0c;屏幕是 ili9341&#xff0c;觸摸是 xpt2046&#xff0c;使用 spi 半雙工 不使用DMA&#xff08;esp-rs還沒支持&#xff09;&#xff0c;SPI 40M&#xff0c;240*320全屏刷新為1.5…

python文件IO之pickle 模塊讀寫對象數據

可以向一個文件中寫入字符串&#xff0c;讀取后也是讀取字符串形式&#xff0c;但是不能直接向文件中寫入像列表這樣的對象&#xff0c;需要 pickle 等模塊才行。 pickle 模塊介紹 pickle 模塊使用強大且有效的算法來進行序列化和反序列化。 序列化是指將一個對象轉換為能夠存…

前端面試手冊

前端面試手冊 崗位職責&#xff1a; 1&#xff0e;熟悉公司業務&#xff0c;能獨立高效高質地完成任務&#xff0c;負責功能的開發、測試、上線、維護&#xff1b; 2&#xff0e;負責推動、優化前端基礎架構、組件抽象&#xff0c;提升開發效率&#xff1b; 3&#xff0e;關…

四. TensorRT模型部署優化-模型部署的基礎知識

目錄 前言0. 簡介1. FLOPS2. TOPS3. HPC的排行&#xff0c;CPU/GPU比較4. FLOPs5. FLOPS是如何計算的6. CUDA Core vs Tensor Core總結參考 前言 自動駕駛之心推出的 《CUDA與TensorRT部署實戰課程》&#xff0c;鏈接。記錄下個人學習筆記&#xff0c;僅供自己參考 本次課程我們…

記一次Spark cache table導致的數據問題以及思考

目前在做 Spark 升級(3.1.1升級到3.5.0)的時候&#xff0c;遇到了cache table導致的數據重復問題&#xff0c;這種情況一般來說是很少見的&#xff0c;因為一般很少用cache table語句。 當然該問題已經在Spark3.5.1已經解決了,可以查看對應的 SPARK-46995和SPARK-45592 從以上的…

最小二乘法-超詳細推導(轉換為矩陣乘法推導,矩陣求導推導)

最小二乘法就是讓均方誤差最小。 下面是損失函數轉換為矩陣方式的詳解 如何讓其最小&#xff0c;在導數為0的地方取極小值。 問&#xff1a;導數為0的地方可能去極大值&#xff0c;也可能是極小值&#xff0c;憑什么說導數為0就是極小值&#xff1f; 答&#xff1a;因為使用…

android ndc firewall 命令type 黑名單 白名單差異

可以看到以白名單方式使能防火墻&#xff0c;fw_FORWARD fw_INPUT fw_OUTPUT 的操作是DROP或REJEDCT。即默認所有應用不允許上網&#xff0c;需要 XXX:/ # ndc firewall enable whitelist 200 0 Firewall command succeeded XXX:/ # iptables -t filter -L Chain INPUT (polic…

酷黑簡潔大氣體育直播自適應模板賽事直播門戶網站源碼

源碼名稱&#xff1a;酷黑簡潔大氣體育直播自適應模板賽事直播門戶網站源碼 開發環境&#xff1a;帝國cms 7.5 安裝環境&#xff1a;phpmysql 支持PC與手機端同步生成html&#xff08;多端同步生成插件&#xff09; 帶軟件采集&#xff0c;可以掛著自動采集發布&#xff0c;無…

【HSQL001】HiveSQL內置函數手冊總結(更新中)

1.熟悉、梳理、總結下Hive SQL相關知識體系。 2.日常研發過程中使用較少&#xff0c;隨著時間的推移&#xff0c;很快就忘得一干二凈&#xff0c;所以梳理總結下&#xff0c;以備日常使用參考 3.歡迎批評指正&#xff0c;跪謝一鍵三連&#xff01; 文章目錄 1.函數清單 1.函數清…

某某某加固系統分析

某某某加固系統內核so dump和修復&#xff1a; 某某某加固系統采取了內外兩層native代碼模式&#xff0c;外層主要為了保護內層核心代碼&#xff0c;從分析來看外層模塊主要用來反調試&#xff0c;釋放內層模塊&#xff0c;維護內存模塊的某些運行環境達到防止分離內外模塊&am…

網上比較受認可的賺錢軟件有哪些?眾多兼職選擇中總有一個適合你

在這個互聯網高速發展的時代&#xff0c;網上賺錢似乎成了一種潮流。但是&#xff0c;你是否還在靠運氣尋找賺錢的機會&#xff1f;是否還在為找不到靠譜的兼職平臺而苦惱&#xff1f; 今天&#xff0c;就為你揭秘那些真正靠譜的網上賺錢平臺&#xff0c;讓你的賺錢之路不再迷…

等保測評的流程是怎樣的

等保測評概述 等保測評&#xff0c;即信息安全等級保護測評&#xff0c;是指對信息系統安全性能進行等級評估的過程。其目的是通過評估系統的安全性能&#xff0c;為系統提供一個安全等級&#xff0c;并規定相應的保護措施。等保測評的流程通常包括定級、備案、安全建設、等級測…

Python--List列表

list列表?? 1高級數據類型 Python中的數據類型可以分為&#xff1a;數字型&#xff08;基本數據類型&#xff09;和非數字型&#xff08;高級數據類型&#xff09; ●數字型包含&#xff1a;整型int、浮點型float、布爾型bool、復數型complex ●非數字型包含&#xff1a;字符…

TypeScript-type注解對象類型

type注解對象類型 在TS中對于對象數據的類型注解&#xff0c;除了使用interface之外還可以使用類型別名來進行注解&#xff0c;作用類似 type Person {name: stringage: number }const p:Person {name: lily,age: 16 } type 交叉類型&模擬繼承 類型別名配合交叉類型…

docker創建的rabbitmq,啟動容器時報:Failed to create thread: Operation not permitted (1)

原因&#xff1a;docker內的用戶權限受限 啟動docker時加上參數 --privilegedtrue docker run --privilegedtrue -d --name rabbitmq --restartalways -p 5671:5671 -p 5672:5672 -p 15672:15672 -p 15671:15671 -p 25672:25672 -v /home/rabbitmq/data/:/var/rabbitm…

整合SSM框架筆記

整合SSM框架筆記 Spring5 Spring MVC MyBatis Druid MySQL Thymeleaf 感謝尚硅谷課程&#xff1a;B站課程 前言 單Spring框架時&#xff0c;是Java工程。 Spring與Spring MVC可以共用一個配置文件&#xff0c;也可以不共用一個&#xff0c;推薦不共用一個。 Spring與Sp…

Quartus 聯合 ModelSim 仿真 IP 核(RAM)

文章目錄 ModelSim 路徑設置創建 RAM進行仿真 本文主要介紹如何在包含 IP 核的 Quartus 項目中使用 Modelsim 進行仿真&#xff0c;本文基于 IP 核 RAM: 2-PORT&#xff0c;其他 IP 核類似。 ModelSim 路徑設置 點擊 Tools->Options 點擊 EDA Tool Options&#xff0c;設置…

BeanFactory、FactroyBean、ApplicationContext

BeanFactory Ioc容器、定義接口規范來管理spring bean的生命周期、依賴、注入&#xff0c;spring中有各種Ioc容器 FactroyBean 定制的工廠Bean&#xff0c;可以通過抽象工廠方式創建的bean&#xff0c;不納入spring的生命周期、依賴、注入特性&#xff0c;相當于spring給第三…

string OJ題

下面分享一下string做題心得 1. 明白字符串中存儲的數字為0 8 9與0 8 9 完全不同&#xff0c;字符0其實在串中存儲的是48&#xff0c;要有意識的轉化。字符串中如果存數字8&#xff0c;意味著存了BS&#xff08;退格&#xff09; 例如1&#xff1a; 算出結果為5&#xff0c;存…

MySQL 用戶變量賦值、查詢賦值、滾動賦值

在MySQL中&#xff0c;用戶變量是一種在會話級別存儲和重用值的方式&#xff0c;它們以符號開頭。用戶變量可以在查詢中用來存儲和傳遞數據&#xff0c;增強SQL腳本的功能性。 定義和賦值用戶變量用戶變量可以直接在查詢中定義并賦值&#xff0c;不需要預先聲明。賦值可以使用S…