色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

沒想到,背包問題解題也有套路

算法與數據結構 ? 來源:五分鐘學算法 ? 2020-06-03 17:31 ? 次閱讀

一、概述

背包問題是一類比較特殊的動態規劃問題,這篇文章的側重點會在答案的推導過程上,我們還是會使用之前提到的解動態規劃問題的四個步驟來思考這類問題。

在講述背包問題之前,首先提及一下,背包類動態規劃問題和其他的動態規劃問題的不同之處在于,背包類動態規劃問題會選用值來作為動態規劃的狀態,你可以回顧下之前我們討論過的動態規劃問題,基本上都是利用數組或者是字符串的下標來表示動態規劃的狀態。

針對背包類問題,我們依然可以畫表格來輔助我們思考問題,但是背包類問題有基本的雛形,題目特征特別明顯,當你理解了這類問題的解法后,遇到類似問題基本上不需要額外的輔助就可以給出大致的解法,這也就是說,學習背包類問題是一個性價比很高的事情,理解了一個特定問題的解法,基本上一類問題都可以直接套這個解法。

二、問題雛形

首先我們來看看這樣一個問題:

有 N 件物品和一個容量為 V 的背包。第 i 件物品的體積是 C[i],價值是 W[i]。求解將哪些物品裝入背包可使價值總和最大。求出最大總價值

話不多說,我們還是按之前的分析四步驟來看看這個問題:

問題拆解

我們要求解的問題是 “背包能裝入物品的最大價值”,這個問題的結果受到兩個因素的影響,就是背包的大小,以及物品的屬性(包括大小和價值)。對于物品來說,只有兩種結果,放入背包以及不放入背包,這里我們用一個例子來畫畫表格:

假設背包的大小是 10,有 4 個物品,體積分別是 [2,3,5,7],價值分別是 [2,5,2,5]。

1、如果我們僅考慮將前一個物品放入背包,只要背包體積大于 2,此時都可以獲得價值為 2 的最大價值:

圖一

2、如果我們僅考慮將前兩個物品放入背包,如果背包體積大于或等于 5,表示兩個物體都可放入,此時都可以獲得價值為 2+5=7 的最大價值,如果不能全都放入,那就要選擇體積不超,價值最大的那個:

圖二

3、如果我們僅考慮將前三個物品放入背包,如果背包體積大于或等于 10,表示三個物體都可放入,此時都可以獲得價值為 2+5+2=9 的最大價值,如果不能全都放入,那就要選擇體積不超,價值最大的那個方案:

圖三

4、如果我們考慮將所有物品放入背包,我們可以依據前三個物品放入的結果來制定方案:

圖四

這樣,我們就根據物品和體積將問題拆分成子問題,也就是 “前 n 個物品在體積 V 處的最大價值” 可以由 “前 n - 1 個物品的情況” 推導得到。

狀態定義

在問題拆解中,我們得知問題其實和背包的體積還有當前考慮的物品有關,因此我們可以定義dp[i][j]表示 “考慮將前 i 個物品放入體積為 j 的背包里所獲得的最大價值”

遞推方程

當我們考慮是否將第 i 個物品放入背包的時候,這里有兩種情況

不放入,也就是不考慮第 i 個物品,那么問題就直接變成了上一個子問題,也就是考慮將 i - 1 個物品放入背包中,這樣當前問題的解就是之前問題的解:

dp[i][j]=dp[i-1][j]

如果背包體積大于第 i 個物品的體積,我們可以考慮將第 i 個物品放入,這個時候我們要和之前的狀態做一個比較,選取最大的方案:

dp[i][j]=Math.max(dp[i-1][j],dp[i-1][j-C[i]]+W[i])

實現

實現這一環節還是主要考慮狀態數組如何初始化,你可以看到,我們每次都要考慮 i - 1,另外還要考慮背包體積為 0 的情況,因此初始化數組時多開一格可以省去不必要的麻煩

publicintzeroOnePack(intV,int[]C,int[]W){ //防止無效輸入 if((V<=?0)?||?(C.length?!=?W.length))?{ ????????return?0; ????} ????int?n?=?C.length; ????//?dp[i][j]:?對于下標為?0~i?的物品,背包容量為?j?時的最大價值 ????int[][]?dp?=?new?int[n?+?1][V?+?1]; ????//?背包空的情況下,價值為?0 ????dp[0][0]?=?0; ????for?(int?i?=?1;?i?<=?n;?++i)?{ ????????for?(int?j?=?1;?j?<=?V;?++j)?{ ????????????//?不選物品?i?的話,當前價值就是取到前一個物品的最大價值,也就是?dp[i?-?1][j] ????????????dp[i][j]?=?dp[i?-?1][j]; ????????????//?如果選擇物品?i?使得當前價值相對不選更大,那就選取?i,更新當前最大價值 ????????????if?((j?>=C[i-1])&&(dp[i][j]

這里還有一個空間上面的優化,如果你回到我們之前畫的表格,考慮前 i 個問題的狀態只會依賴于前 i - 1 個問題的狀態,也就是dp[i][...]只會依賴于dp[i - 1][...],另外一點就是當前考慮的背包體積只會用到比其小的體積。

基于這些信息,我們狀態數組的維度可以少開一維,但是遍歷的方向上需要從后往前遍歷,從而保證子問題需要用到的數據不被覆蓋,優化版本如下:

publicintzeroOnePackOpt(intV,int[]C,int[]W){ //防止無效輸入 if((V<=?0)?||?(C.length?!=?W.length))?{ ????????return?0; ????} ????int?n?=?C.length; ????int[]?dp?=?new?int[V?+?1]; ????//?背包空的情況下,價值為?0 ????dp[0]?=?0; ????for?(int?i?=?0;?i?=C[i];--j){ dp[j]=Math.max(dp[j],dp[j-C[i]]+W[i]); } } returndp[V]; }

這里,因為物品只能被選中 1 次,或者被選中 0 次,因此我們稱這種背包問題為01 背包問題。

還有一類背包問題,物品可以被選多次或者 0 次,這類問題我們稱為完全背包問題,這類背包問題和 01 背包問題很類似,略微的不同在于,在完全背包問題中,狀態dp[i][j]依賴的是dp[i - 1][j]以及dp[i][k] k < j,你可以看看下面的實現代碼:

publicintcompletePack(intV,int[]C,int[]W){ //防止無效輸入 if(V==0||C.length!=W.length){ return0; } intn=C.length; //dp[i][j]:對于下標為0~i的物品,背包容量為j時的最大價值 int[][]dp=newint[n+1][V+1]; //背包空的情況下,價值為0 dp[0][0]=0; for(inti=1;i<=?n;?++i)?{ ????????for?(int?j?=?1;?j?<=?V;?++j)?{ ????????????//?不取該物品 ????????????dp[i][j]?=?dp[i?-?1][j]; ????????????//?取該物品,但是是在考慮過或者取過該物品的基礎之上(dp[i][...])取 ????????????//?0-1背包則是在還沒有考慮過該物品的基礎之上(dp[i?-?1][...])取 ????????????if?((j?>=C[i-1])&&(dp[i][j-C[i-1]]+W[i-1]>dp[i][j])){ dp[i][j]=dp[i][j-C[i-1]]+W[i-1]; } } } //返回,對于所有物品(0~N),背包容量為V時的最大價值 returndp[n][V]; }

類似的,我們還是可以對狀態數組進行空間優化,依據我們之前討論的狀態之間的依賴關系,完全背包的空間優化我們直接把狀態數組少開一維即可,遍歷方式都不需要改變:

publicintcompletePackOpt(intV,int[]C,int[]W){ if(V==0||C.length!=W.length){ return0; } intn=C.length; int[]dp=newint[V+1]; for(inti=0;i

下面,我們就根據這兩類背包問題,看看遇到類似的問題我們是否可以套用上面我們介紹的解法。

三、相關題目實戰

LeetCode 第 416 號問題:分割等和子集。

題目來源:https://leetcode-cn.com/problems/partition-equal-subset-sum/

題目描述

給定一個只包含正整數的非空數組。是否可以將這個數組分割成兩個子集,使得兩個子集的元素和相等。

注意:

每個數組中的元素不會超過 100

數組的大小不會超過 200

示例 1:

輸入:[1,5,11,5] 輸出:true 解釋:數組可以分割成[1,5,5]和[11].

示例 2:

輸入:[1,2,3,5] 輸出:false 解釋:數組不能分割成兩個元素和相等的子集.

題目分析

題目給定一個數組,問是否可以將數組拆分成兩份,并且兩份的值相等,這里并不是說分成兩個子數組,而是分成兩個子集。

直觀的想法是直接遍歷一遍數組,這樣我們可以得到數組中所有元素的和,這個和必須是偶數,不然沒法分,其實很自然地就可以想到,我們要從數組中挑出一些元素,使這些元素的和等于原數組中元素總和的一半,“從數組中找出一些元素讓它們的和等于一個固定的值”,這么一個信息能否讓你想到背包類動態規劃呢?

如果你能想到這個地方,再配上我們之前講的01 背包問題的解法,那么這道題目就可以直接套解法了,這里我就不具體分析了。

參考代碼

publicbooleancanPartition(int[]nums){ if(nums==null||nums.length==0){ returnfalse; } intsum=0; intn=nums.length; for(inti=0;i=nums[i];--j){ dp[j]|=dp[j-nums[i]]; } } returndp[target]; }

LeetCode 第 322 號問題:零錢兌換。

題目來源:https://leetcode-cn.com/problems/coin-change

題目描述

給定不同面額的硬幣coins和一個總金額amount。編寫一個函數來計算可以湊成總金額所需的最少的硬幣個數。如果沒有任何一種硬幣組合能組成總金額,返回-1。

示例 1:

輸入:coins=[1,2,5],amount=11 輸出:3 解釋:11=5+5+1

示例 2:

輸入:coins=[2],amount=3 輸出:-1

說明:
你可以認為每種硬幣的數量是無限的。

題目分析

題目給定一個數組和一個整數,數組里面的值表示的是每個硬幣的價值,整數表示的是一個價值,問最少選擇多少個硬幣能夠組成這個價值,硬幣可以重復選擇。

雖然這里只有一個輸入數組,但是我們還是可以看到背包的影子,這里的整數就可以看作是背包的體積,然后數組里面的值可以看作是物品的體積,那物品的價值呢?

在這里,你可以形象地認為每個物品的價值是 1,最后我們要求的是填滿背包的最小價值,因為這里物品是可以重復選擇多次的,因此可以歸類于完全背包問題,套用之前的解法就可以解題,唯一要注意的一點是,這里我們不在求最大價值,而求的是最小價值,因此我們需要先將狀態數組初始化成無窮大。

參考代碼

publicintcoinChange(int[]coins,intamount){ int[]dp=newint[amount+1]; Arrays.fill(dp,Integer.MAX_VALUE); dp[0]=0; for(inti=0;i

輔助動畫

LeetCode 第 518 號問題:零錢兌換II。

題目來源:https://leetcode-cn.com/problems/coin-change-2/

題目描述

給定不同面額的硬幣和一個總金額。寫出函數來計算可以湊成總金額的硬幣組合數。假設每一種面額的硬幣有無限個。

示例 1:

輸入:amount=5,coins=[1,2,5] 輸出:4 解釋:有四種方式可以湊成總金額: 5=5 5=2+2+1 5=2+1+1+1 5=1+1+1+1+1

示例 2:

輸入:amount=3,coins=[2] 輸出:0 解釋:只用面額2的硬幣不能湊成總金額3。

示例 3:

輸入:amount=10,coins=[10] 輸出:1

注意:

你可以假設:

0 <= amount (總金額) <= 5000

1 <= coin (硬幣面額) <= 5000

硬幣種類不超過 500 種

結果符合 32 位符號整數

題目分析

這道題目是上一道題目的變形,題目的輸入參數還是不變,變的是最后的問題,這里需要求的是 “有多少種組合方式能夠填滿背包”,我們還是可以套用完全背包的解法,只是最后求解的東西變了,那我們動態規劃狀態數組中記錄的東西相應的改變即可,在這道題中,狀態數組中記錄組合成該價值的方案的個數即可。

參考代碼

publicintchange(intamount,int[]coins){ int[]dp=newint[amount+1]; dp[0]=1; for(inti=0;i

K Sum。

題目描述

給定一個輸入數組 array,還有兩個整數 k 和 target,在數組 array 中找出 k 個元素,使得這 k 個元素相加等于 target,問有多少種組合方式,輸出組合方式的個數。

注:在一種組合方式中,一個元素不能夠被重復選擇

題目分析

我們之前講過 Two Sum,也提到過 3 Sum,還有 4 Sum,那這道題是否可以套用之前的解法呢?

這里有一個細節不知道你是否發現,就是這道題目僅僅是讓你輸出所有組合方式的個數,并沒有讓你輸出所有的組合方式,這是決定是否使用動態規劃很重要的一點。

如果沒有這個 k,我相信你會很直接地想到使用01 背包問題的解法,那我們可以思考一下,基于原來的解法,如果增加了 k 這個限制,我們需要額外做些什么事情呢?

因為 k 會決定問題的狀態,因此我們的狀態數組中也要考慮 k,在考慮將第 k 個元素放入背包中,我們需要看的是背包中存放 k - 1 個元素的情況,這么看來,其實相比普通的01 背包問題,這道題目僅僅是增加了一維狀態,沒有其他的變化。

參考代碼

publicintkSum(int[]array,intk,inttarget){ int[][]dp=newint[target+1][k+1]; dp[0][0]=1; for(inti=0;i=array[i];--j){ //和普通01背包問題相比,僅僅是多了一層狀態需要考慮 //這層狀態記錄的是背包里面元素的個數 //我們放入第r個元素的時候,必須確保背包里面已經有r-1個元素 for(intr=1;r<=?k;?++r)?{ ????????????????dp[j][r]?+=?dp[j?-?array[i]][r?-?1]; ????????????} ????????} ????} ????return?dp[target][k]; }

四、總結

背包類的動態規劃問題我們就先講到這里,我們介紹了兩類比較基礎的背包問題,01 背包問題和完全背包問題,解這類問題有既定的模版和思路可以參照,理解了模版問題,也就理解了一類問題,算是學習性價比很高的一類動態規劃問題。

往往背包類問題可以很好地根據題目的描述判斷出來,這類問題狀態的定義也比較特殊,就是用值來作為動態規劃的狀態,我們也用了一些習題來練習了一番,相信你對背包問題有了大致的了解,也對動態規劃有了更廣的認識。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數組
    +關注

    關注

    1

    文章

    417

    瀏覽量

    25939

原文標題:額,沒想到,背包問題解題也有套路。。。

文章出處:【微信號:TheAlgorithm,微信公眾號:算法與數據結構】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    使用LM75BIMX作為溫度傳感器檢測環境溫度,得到的數據持續為不符合現實的錯誤數據,怎么解決?

    ,使用熱風槍對著溫度傳感器吹,讀出的數據沒有任何變化。請各位專家就問題的解決方向給予指導。項目時間挺緊急的,沒想到在這里卡住了。
    發表于 12-13 06:01

    PCM2704的ROM編程好了,竟然是亂碼,為什么?

    的說法將ROM編程好,接入系統,插入USB后,顯示正在安裝驅動,沒想到安裝完畢后竟然名稱顯示為亂碼,百思不得其解。望各位大神幫我看看問題出在哪里 這是德州儀器官方數據表中關于ROM的三段重要描述 我按照說明編程如下 可是插入電腦后顯示是亂碼 求助大神,問題出在哪里?
    發表于 11-05 08:04

    歐姆定律我是很熟,只是沒想到電流不按套路出牌!

    高速先生成員--黃剛 誠如高速先生所言,其實電源的直流壓降和通流設計和仿真背后的原理真的很簡單,那就是初中就學過的歐姆定律。請允許Chris不厭其煩的再再再一次給大家介紹下電源直流壓降和通流設計或者仿真的本質。在電源輸出端,也就是VRM端,主要是給負載,也就是Sink端提供電流,并保證原始的輸出電壓。但是在實際鏈路中免不了會產生直流電阻R,因此最終需要電流I的Sink端的電壓就會比電源輸出端的U減少I*R的值。 那在常規PCB板級設計中,在VRM和Sink端中間就是PCB的鏈路產生直流電阻R。再細化一下PCB的結構,其實就是電源的平面和換層過孔兩大部分所產生,一個是水平面上的電阻,例如銅皮寬度,層數,銅厚等;一個是垂直面上的電阻,例如過孔數量,過孔大小等。為什么說大家普遍認為電源壓降和通流的設計比較簡單呢,因為除了理論簡單之外,行業內還有不少免費的小軟件可以在前期進行銅皮和過孔的通流評估。 例如今天要講的關于過孔通流的設計問題中,首先我們用一些軟件對電源過孔通流進行評估,在軟件中輸入具體過孔的大小,包括約束的溫升等信息,就能夠快速的得到它通流的大小。例如下面,差不多一個10mil的過孔外,在約束溫升10度的情況下能過1A左右的電流。 嗯,然后我們就會根據不同過孔軟件評估的通流數值,再加上10-20%的裕量,給設計部的同事進行推廣,相當于給出不仿真情況下的過孔通流規則。 剛好Chris這周去我司的蘇州分部出差,路過設計部時,無意中看到工作經驗2年左右的小云同學在處理一個電源的設計。湊近一看,那是一個20A左右的core電源的設計,VRM電源在右上方,要往左下方的BGA芯片供電,由于層面的限制,中間電源平面需要從L8層換到L9層,于是Chris看到小云同學非常規整的在進BGA的邊界處打了一排電源過孔進行換層。大概數了下,40個過孔左右。 小云看到Chris后,于是很自豪的說,按照高速先生給出的約束,1個10mil的過孔能過1A的電流,理論上20個過孔就可以過20A電流,為了保險,還特意打多一倍。小樣,這20A電流還不輕輕松松搞掂! 的確看起來還行哈,過孔也打得比較規整,數量也是足夠的,應該是比較理想的結果了吧。不過在Chris這里看來,還是發現一些隱藏的問題,還可以有進一步去優化的空間。于是在拜訪客戶之余的時間,拿著這個版本簡單的做了個電源通流的仿真。你們猜猜仿真結果是怎么樣的? 晚上Chris給分部進行培訓,順便就拿出了小云這個設計的案例進行分享。首先Chris讓大家暢所欲言,看看這個電源設計怎么樣?大部分同事都覺得挑不出太多毛病,過孔數量足夠多,也打在距離BGA用電端外面最近的一排位置,常規不都這樣做的嘛。分部里最資深的郭工和唐工根據他們多年的設計經驗,隱隱感覺有點問題,電源位置和芯片位置是斜方向對應的,如果在水平或豎直方向對應的話這個設計沒有問題,斜方向下來的電流感覺有點奇怪。 正所謂事出反常必有妖,有經驗的設計工程師其實會下意識的感覺到不是很對,但是只是沒法將這種感覺量化出來。于是Chris分享了小云同學這個過孔設計的通流仿真結果,不看不知道,一看嚇好幾跳。在這40個過孔的通流仿真結果中,每個過孔的通流差異灰常的巨大,實際也就只有右邊的10個8個過孔能真正通流,左邊的20個以上幾乎不怎么過電流。最右邊的過孔居然有超過2.5A電流要承載。從原理上我們也知道,過孔如果承受了它應該承受的電流大小后,輕則導致負載壓降變大,重則發熱嚴重,把自己燒了。 最后再稍微總結下唄。不是說一個過孔評估起來就過1A嗎,更何況20A電流打了40個過孔,理論上1個過孔平均分0.5A就行了嗎,為什么會出現過孔間通流那么大差異的情況?問題這不就出在“理論上”這三個字嘛。一些簡單的評估軟件是理論上的評估,它沒法預料到電流要經過具體哪些區域,只是單純的對這個過孔本身進行通流的預測,是有一定的參考作用,但是并不能百分百靠它。在這次培訓中,Chris針對類似這樣的案例進行了原理的分析并分享了一些優化的方案,大家聽完后,突然自己又可以了。原來知道是什么影響了過孔間通流差異的現實版“歐姆定律”后,其實電流的設計也還是不是很難的嘛。 問題:到底這個設計過孔間通流差異巨大的原因是啥?如果是你們,又會怎么去優化呢?歡迎踴躍討論哈!
    發表于 10-28 17:41

    歐姆定律我是很熟,只是沒想到電流不按套路出牌!

    本來我真的覺得板級電源通流的PCB設計很簡單,多鋪平面多打過孔就搞掂。自從讀到高速先生這篇文章后,我立馬就把以前的設計項目又翻出來看看……
    的頭像 發表于 10-28 17:40 ?229次閱讀
    歐姆定律我是很熟,只是<b class='flag-5'>沒想到</b>電流不按<b class='flag-5'>套路</b>出牌!

    Raspberry Pi CM5 還要幾周才能上市嗎?

    如果您經常逛電子產品商店/網站,您可能會偶然發現一些您沒想到的產品。今天在 Mouser 上,我們似乎有一堆 Raspberry Pi CM5 配件。很快 TM 就會有?
    的頭像 發表于 10-28 10:26 ?260次閱讀
    Raspberry Pi CM5 還要幾周才能上市嗎?

    評測活動第一名李工:我用Jupiter畫了個原理圖,然后成了段子手…

    為昕邀請了這次參與Jupiter評測活動的第一名獲獎者李工@李工寫一下評測感想,沒想到,是位工程師界的段子手——爆笑時刻到來→李工感想各位EDA界的老鐵們,聽我給你們吹個牛!最近我參加了為昕軟件試用
    的頭像 發表于 07-31 17:42 ?801次閱讀
    評測活動第一名李工:我用Jupiter畫了個原理圖,然后成了段子手…

    吃個瓜而已,AI居然寫了份研究報告??

    救命,本來只是想隨手吃個瓜,沒想到AI較真起來,寫了份完整研究報告。一口氣查幾百篇資料,從中精選出42篇參考,十幾秒內洋洋灑灑3000多字。
    的頭像 發表于 07-04 18:45 ?285次閱讀
    吃個瓜而已,AI居然寫了份研究報告??

    拆了某寶39.9的藍牙音響,沒想到內部電路如此豐富!

    拆解一款跟隨我多年的藍牙音響,外觀設計還是很不錯的,圓柱形的絲滑輪廓,搭配絢麗鬼魅的LED藍色燈光,尤其是在漆黑的夜晚顯得很是高貴。拆解過程中,一條連接鋰電池的線被我拉斷了,后來,第二條也斷了。。。請忽略,不要在意這些細節。。繼續拆,喇叭在下面,要拆掉下面四顆十字螺絲。拆開了,先給喇叭來個帥氣的特寫,喇叭用的是3Ω3W的我們重點研究下上面這個板子經各種分析畫
    的頭像 發表于 05-22 08:04 ?596次閱讀
    拆了某寶39.9的藍牙音響,<b class='flag-5'>沒想到</b>內部電路如此豐富!

    哪個STM8的開發工具最好用,最便捷?

    最近兩天剛開始搞STM8,本以為用過STM32之后,STM8應該很容易的。沒想到兩天就栽在STM8的開發工具里了,俺實在是才疏學淺,覺得STM8的開發工具實在是太難用了,跟keil簡直是天壤之別。現發起投票,看一下大家的感受,都一起分享討論一下。
    發表于 05-15 08:11

    盤點使用agv叉車的7大行業,第1個很正常,第5個是真沒想到

    隨著科技的不斷進步,無人叉車作為一種智能化、自動化的物流設備,正在逐步滲透到多個行業,以其高效、準確和安全的特點贏得了廣泛認可。在物流、制造、倉儲、電商等多個領域,無人叉車都發揮著舉足輕重的作用。? 物流行業:無人叉車在物流行業中的應用尤為突出。它們可以高效、準確地完成貨物的搬運、堆垛和分揀等工作,減少人工操作,提高物流效率。特別是在大型倉庫和配送中心,無人叉車能夠自動導航和避障,實現24小時不間斷工作
    的頭像 發表于 04-12 14:59 ?475次閱讀
    盤點使用agv叉車的7大行業,第1個很正常,第5個是真<b class='flag-5'>沒想到</b>

    圣同智能激光背包式激光清洗機產品介紹

    隨著現代化的進步,科技的不斷發展,各種高科技產品不斷涌現,其中背包式激光清洗機就是其中之一。背包式激光清洗機是一種新型的清洗設備,它采用激光技術,能夠對各種材料表面進行高效、精準、安全的清洗
    的頭像 發表于 04-11 14:54 ?311次閱讀
    圣同智能激光<b class='flag-5'>背包</b>式激光清洗機產品介紹

    沒想到,硬件工程師也有社死一刻

    揚興科技
    揚興科技
    發布于 :2024年04月04日 23:07:03

    STM32H7B3I-DK開發板上可以使用什么攝像頭模塊呢?

    各位大佬,有誰用過符合這種條件的攝像頭嘛,沒想到這套板子驅動攝像頭有點麻煩,手冊里提到的那個STM32F4DIS-CAM不太好買到啊
    發表于 03-19 08:20

    宋仕強論道之華強北背包客(三十九)

    華強北洶涌的人流,主要是在華強北經營的商戶和來華強北的客戶,還包括華強北的背包客,背包客是華強北的特殊群體,來自于全國各地甚至于世界各地,國外的背包客也是華強北國際化的主要渠道。一個是國內的
    發表于 01-09 10:59

    make、make all和make clean的使用方法

    剛接觸Linux,認為直接make后就完成了編譯,沒想到編譯出的結果存在很大問題,原來是make、make all和make clean的使用方法不對。
    的頭像 發表于 01-05 12:32 ?1942次閱讀
    主站蜘蛛池模板: xxx在线播放| 中国女人内谢69xxxxxx直播| 单亲妈妈3韩国电影免费观看| 老师洗澡让我吃她胸的视频 | 九色PORNY真实丨国产大胸| 视频一区国产第一页| 阿v天堂2017在无码| 男男免费看| 亚洲人成网站在线观看90影院 | 久久亚洲A片COM人成A| 亚洲成AV人电影在线观看| 囯产精品一区二区三区线| 青青草偷拍国产亚洲欧洲| 97视频国产| 美女伸开两腿让我爽| 中文字幕本庄优花喂奶| 久久九九青青国产精品| 亚洲伊人色| 精品久久久久中文字幕加勒比东京热| 亚洲电影二区| 国产精品亚洲精品久久品| 甜性涩爱全集在线观看| 国产AV视频二区在线观看| 日韩欧美1区| 成人区在线观看免费视频| 日本高清天码一区在线播放| 超碰免费碰免费视频| 全身无赤裸裸美女网站| wankz tv videos国产| 欧美日韩无套内射另类| a在线观看视频| 欧美一区二区三区男同| xxx动漫xxx在线观看| 日本免费xxx| 粉嫩极品国产在线观看| 特级做A爰片毛片免费看108| 国产精品久久久久影院色老大 | 国产福利高清在线视频| 无套内射无矿码免费看黄| 国产女高清在线看免费观看| 驯服有夫之妇HD中字日本|