數據結構與算法——1204—遞歸分治法

1、斐波那契數列優化

使用滾動變量,保存當前計算結果和前兩項值

(1)R=A+B

(2)更新計算對象,A=B,B=R

#include<iostream>
using namespace std;int fun(int n)
{if (n == 0)return 0;if (n == 1 || n == 2)return 1;int num1=1;int num2=1;int sum=0;int i = 3;while (i<= n){sum = num1 + num2;num1 = num2;num2 = sum;//cout << sum << endl;i++;}return sum;
}int main()
{cout<<fun(10);return 0;
}

?2、防止越界方法

1e9+7——int范圍內最大的素數——1000000007

F(51)=F(49)%(1e9+7)+F(50)%(1e9+7)

3、青蛙爬樓梯

一只青蛙,一次可以爬一級樓梯,也可以爬兩級,求n級臺階有多少種跳法

1級:1次1級

2級:1次1級? 1次1級

?????? ? 1次2級

3級:1次1級? 2級的情況

???????? 1次2級? 1級的情況

F(n)=F(n-1)+F(n-2)??????????????? F(1)=1??????? F(2)=2

4、分治法

把大的問題分解為若干個解決方案完全相同的子問題

1、問題難度隨數據規模增加而減小

2、問題可分

3、子問題的解可合并

4、子問題的解相互獨立

二分查找

第一種方法

#include<iostream>
#include<vector>
using namespace std;int BinargChop(vector<int>&nums,int target)
{int left = 0;int right = nums.size()-1;int middle=0;while (left<right){middle = (left + right) / 2;if (nums[middle] < target){left = middle+1;}else if (nums[middle] > target){right = middle-1;}if (nums[middle] == target){return middle;}}}int main()
{vector<int>nums = { 1,12,36,56,88,99 };int target = 88;cout << BinargChop(nums, target);
}

第二種方法

#include<iostream>
#include<vector>
using namespace std;int BinargChop(vector<int>& nums, int target,int left,int right)
{int middle = 0;while (left < right){middle = (left + right) / 2;if (nums[middle] < target){left = middle + 1;BinargChop(nums, target, left, right);}else if (nums[middle] > target){right = middle - 1;BinargChop(nums, target, left, right);}if (nums[middle] == target){return middle;}}
}int main()
{vector<int>nums = { 1,12,36,56,88,99 };int target = 99;int left = 0;int right = nums.size()-1;cout << BinargChop(nums, target,left,right);
}

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

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

相關文章

openstack內部rpc消息通信源碼分析

我們知道openstack內部消息隊列基于AMQP協議&#xff0c;默認使用的rabbitmq 消息隊列。談到rabbitmq&#xff0c;大家或許并不陌生&#xff0c;但或許會對oslo message有些陌生。openstack內部并不是直接使用rabbitmq&#xff0c;而是使用了oslo.message 。oslo.message 后端的…

Python 3 和 MongoDB 的集成使用

Python 3 和 MongoDB 的集成使用 MongoDB 是一個流行的 NoSQL 數據庫&#xff0c;以其靈活的數據模型和強大的查詢功能而聞名。Python 3 作為一種廣泛使用的編程語言&#xff0c;與 MongoDB 的集成變得日益重要。本文將介紹如何在 Python 3 環境中集成和使用 MongoDB&#xff…

Postman自定義腳本Pre-request-script以及Test

這兩個都是我們進行自定義script腳本的地方&#xff0c;分別是在請求執行的前后運行。 我們舉兩個可能經常運用到的場景。 (一)請求A先執行&#xff0c;請求B使用請求A響應結果作為參數。如果我們不用自定義腳本&#xff0c;可能得先執行請求A&#xff0c;然后手動復制響應結果…

構建高效OTA旅游平臺的技術指南

1. 引言 在信息技術高速發展的今天&#xff0c;互聯網深刻地改變了人們的旅行方式。傳統的旅行社模式逐漸被在線旅游平臺所取代&#xff0c;OTA&#xff08;Online Travel Agency&#xff0c;在線旅行社&#xff09;旅游平臺應運而生&#xff0c;成為人們獲取旅游信息、預訂旅…

總結的一些MySql面試題

目錄 一&#xff1a;基礎篇 二&#xff1a;索引原理和SQL優化 三&#xff1a;事務原理 四&#xff1a;緩存策略 一&#xff1a;基礎篇 1&#xff1a;定義&#xff1a;按照數據結構來組織、存儲和管理數據的倉庫&#xff1b;是一個長期存儲在計算機內的、有組織的、可共享 的…

116. UE5 GAS RPG 實現擊殺掉落戰利品功能

這一篇&#xff0c;我們實現敵人被擊敗后&#xff0c;掉落戰利品的功能。首先&#xff0c;我們將創建一個新的結構體&#xff0c;用于定義掉落體的內容&#xff0c;方便我們設置掉落物。然后&#xff0c;我們實現敵人死亡時的掉落函數&#xff0c;并在藍圖里實現對應的邏輯&…

Excel技巧:如何批量調整excel表格中的圖片?

插入到excel表格中的圖片大小不一&#xff0c;如何做到每張圖片都完美的與單元格大小相同&#xff1f;并且能夠根據單元格來改變大小&#xff1f;今天分享&#xff0c;excel表格里的圖片如何批量調整大小。 方法如下&#xff1a; 點擊表格中的一個圖片&#xff0c;然后按住Ct…

智能合約

06-智能合約 0 啥是智能合約&#xff1f; 定義 智能合約&#xff0c;又稱加密合約&#xff0c;在一定條件下可直接控制數字貨幣或資產在各方之間轉移的一種計算機程序。 角色 區塊鏈網絡可視為一個分布式存儲服務&#xff0c;因為它存儲了所有交易和智能合約的狀態 智能合約還…

智慧油客:從初識、再識OceanBase,到全棧上線

今天&#xff0c;我們邀請了智慧油客的研發總監黃普友&#xff0c;為我們講述智慧油客與 OceanBase 初識、熟悉和結緣的故事。 智慧油客自2016年誕生以來&#xff0c;秉持新零售的思維&#xff0c;成功從過去二十年間以“以銷售產品為中心”的傳統思維模式&#xff0c;轉向“以…

【深度學習】手機SIM卡托缺陷檢測【附鏈接】

一、手機SIM卡托用途 SIM卡托是用于固定和保護SIM卡的部件&#xff0c;通過連接SIM卡與手機主板的方式&#xff0c;允許設備訪問移動網絡&#xff0c;用戶可以通過SIM卡進行通話、發送短信和使用數據服務。 二、手機SIM卡托不良影響 SIM卡接觸不良&#xff0c;造成信號中斷&…

高新技術企業復審需要哪些材料?

高新技術企業復審需要準備以下材料&#xff1a; 《高新技術企業認定復審申請書》&#xff1b;高新技術企業證書&#xff1b;企業營業執照副本、稅務登記證書&#xff08;復印件&#xff09;&#xff1b;企業職工人數、學歷結構以及研發人員占企業職工的比例證明&#xff1b;五…

消防物證管理系統|DW-S404實現消防物證智能化管理

一、系統概述 智慧消防物證管理系統DW-S404系統旨在借助現代信息技術&#xff0c;達成消防物證管理的高效化、安全化及智能化管理目標。該系統運用物聯網、大數據、云計算等先進技術&#xff0c;實現對消防物證從產生到銷毀的全生命周期跟蹤與監控&#xff0c;從而增強物證管理…

Odoo :一款免費且開源的食品生鮮領域ERP管理系統

文 / 貝思納斯 Odoo金牌合作伙伴 引言 提供業財人資稅的精益化管理&#xff0c;實現研產供銷的融通、食品安全的追蹤與溯源&#xff0c;達成渠道的扁平化以及直面消費者的 D2C 等數字化解決方案&#xff0c;以此提升運營效率與核心競爭力&#xff0c;支撐高質量的變速擴張。…

如何部署vue項目到Github Pages

1.創建vue項目 npm create vitelatest my-vue-app -- --template vue 2.創建github倉庫 3.連接倉庫 在項目根目錄右鍵選擇open git base here&#xff0c;如果沒有安裝git請先安裝git。 初始化倉庫 $ git init $ git add . $ git commit -m "init"將項目與倉庫連…

Dubbo應用篇

文章目錄 一、Dubbo簡介二、SSM項目整合Dubbo1.生產者方配置2.消費者方配置 三、Spring Boot 項目整合Dubbo1.生產者方配置2.消費者方配置 四、應用案例五、Dubbo配置的優先級別1. 方法級配置&#xff08;Highest Priority&#xff09;2. 接口級配置3. 消費者/提供者級配置4. 全…

ubuntu的matlab使用心得

1.讀取視頻 v VideoReader(2222.mp4);出問題&#xff0c;報錯&#xff1a; matlab 錯誤使用 VideoReader/initReader (第 734 行) 由于出現意外錯誤而無法讀取文件。原因: Unable to initialize the video properties 出錯 audiovideo.internal.IVideoReader (第 136 行) init…

消息中間件-Kafka1-實現原理

消息中間件-Kafka 一、kafka簡介 1、概念 Kafka是最初由Linkedin公司開發&#xff0c;是一個分布式、支持分區&#xff08;partition&#xff09;、多副本的&#xff08;replica&#xff09;&#xff0c;基于zookeeper協調的分布式消息系統&#xff0c;它的最大的特性就是可以…

如何利用“一鍵生成ppt”減輕工作壓力

隨著數字化的快速發展&#xff0c;PPT設計這一傳統任務也迎來了新的變化。過去&#xff0c;制作一個簡潔、專業的PPT需要花費大量時間與精力。但現在借助科技的力量&#xff0c;一鍵生成PPT的夢想成真了。從智能生成ppt到ai生成ppt的技術不斷進步&#xff0c;令我們能夠體驗到更…

創造未來:The Sandbox 創作者訓練營如何賦能全球創造者

創作者訓練營讓創造者有能力打造下一代數字體驗。通過促進合作和提供尖端工具&#xff0c;The Sandbox 計劃確保今天的元宇宙是由一個個創造者共同打造。 2024 年 5 月&#xff0c;The Sandbox 推出了「創作者訓練營」系列&#xff0c;旨在重新定義數字創作。「創作者訓練營」系…

Docker多架構鏡像構建踩坑記

背景 公司為了做信創項目的亮點&#xff0c;需要將現有的一套在X86上運行的應用系統遷移到ARM服務器上運行&#xff0c;整個項目通過后端Java&#xff0c;前端VUEJS開發通過CICD做成Docker鏡像在K8S里面運行。但是當前的CICD產品不支持ARM的鏡像構建&#xff0c;于是只能手工構…