動態(tài)規(guī)劃與貪心算法的比較分析與總結(jié)_第1頁
動態(tài)規(guī)劃與貪心算法的比較分析與總結(jié)_第2頁
動態(tài)規(guī)劃與貪心算法的比較分析與總結(jié)_第3頁
動態(tài)規(guī)劃與貪心算法的比較分析與總結(jié)_第4頁
動態(tài)規(guī)劃與貪心算法的比較分析與總結(jié)_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

動態(tài)規(guī)劃與貪心算法的比較分析與總結(jié)一、引言

動態(tài)規(guī)劃(DynamicProgramming,DP)與貪心算法(GreedyAlgorithm)是算法設(shè)計中的兩種重要方法,它們在解決優(yōu)化問題時具有各自的特點和適用場景。本文旨在通過比較分析這兩種算法的原理、適用條件、優(yōu)缺點及典型案例,幫助讀者深入理解其差異,并總結(jié)其應(yīng)用規(guī)律。

二、動態(tài)規(guī)劃算法

(一)基本原理

動態(tài)規(guī)劃是一種通過將復(fù)雜問題分解為子問題并存儲子問題解來避免重復(fù)計算的方法,適用于具有“重疊子問題”和“最優(yōu)子結(jié)構(gòu)”特性的問題。

1.核心概念

(1)重疊子問題:在問題求解過程中,多個子問題會重復(fù)出現(xiàn)。

(2)最優(yōu)子結(jié)構(gòu):問題的最優(yōu)解包含其子問題的最優(yōu)解。

2.實現(xiàn)步驟

(1)定義狀態(tài):明確問題的狀態(tài)表示(如使用數(shù)組或矩陣)。

(2)狀態(tài)轉(zhuǎn)移方程:建立子問題之間的關(guān)系式。

(3)邊界條件:確定初始狀態(tài)。

(4)計算順序:自底向上或自頂向下(帶備忘錄)。

(二)適用場景

1.典型問題:

-背包問題(0/1背包、完全背包)

-最長公共子序列(LCS)

-斐波那契數(shù)列

2.關(guān)鍵特征:

-問題可分解為無后效性子問題。

-存在大量重疊子問題。

三、貪心算法

(一)基本原理

貪心算法在每一步選擇當(dāng)前最優(yōu)解(局部最優(yōu)),希望最終得到全局最優(yōu)解。它不保存子問題解,而是直接推進。

1.核心概念

(1)局部最優(yōu):每步選擇當(dāng)前最符合條件的解。

(2)全局最優(yōu):最終解滿足整體目標(biāo)最優(yōu)。

2.實現(xiàn)步驟

(1)定義目標(biāo)函數(shù):明確優(yōu)化目標(biāo)(如最小化成本或最大化收益)。

(2)確定貪心選擇屬性:選擇滿足局部最優(yōu)的貪心策略。

(3)構(gòu)建最優(yōu)解:逐步迭代直到完成。

(二)適用場景

1.典型問題:

-荷蘭國旗問題

-最小生成樹(Prim、Kruskal算法)

-單源最短路徑(Dijkstra算法)

2.關(guān)鍵特征:

-問題具有貪心選擇性質(zhì)。

-每次選擇后狀態(tài)不可逆。

四、動態(tài)規(guī)劃與貪心算法的比較

(一)核心差異

1.狀態(tài)保存

-動態(tài)規(guī)劃:存儲子問題解以避免重復(fù)計算。

-貪心算法:不保存解,直接推進。

2.選擇策略

-動態(tài)規(guī)劃:基于狀態(tài)轉(zhuǎn)移方程遞推。

-貪心算法:基于貪心選擇屬性。

3.時間復(fù)雜度

-動態(tài)規(guī)劃:通常較高(如O(n^2)),因需計算所有子問題。

-貪心算法:通常較低(如O(nlogn)),依賴高效選擇策略。

(二)適用性對比

1.問題結(jié)構(gòu)

-動態(tài)規(guī)劃:適用于可分解為子問題的問題。

-貪心算法:適用于具有貪心選擇性質(zhì)的問題。

2.示例對比

-背包問題:動態(tài)規(guī)劃可求解,貪心不可行。

-最小生成樹:Kruskal算法(貪心)有效,而動態(tài)規(guī)劃不適用。

五、總結(jié)

1.應(yīng)用規(guī)律

-動態(tài)規(guī)劃適用于需要全局最優(yōu)且子問題重疊的場景。

-貪心算法適用于局部最優(yōu)可推導(dǎo)全局最優(yōu)的場景。

2.實際選擇

-判斷問題是否滿足貪心選擇性質(zhì)。

-評估計算復(fù)雜度與存儲需求。

3.互補性

-部分問題可結(jié)合兩者(如部分背包問題可先用貪心預(yù)處理)。

六、典型問題詳解與算法實現(xiàn)

(一)動態(tài)規(guī)劃應(yīng)用實例:0/1背包問題

1.問題描述

-給定n種物品和一個容量為C的背包,物品i的重量是w[i],其價值為v[i]。

-背包能承受的最大重量為C,每種物品僅有一件,選擇裝入背包的物品,使得裝入背包中物品的總價值最大。

2.解決步驟

(1)定義狀態(tài)

-dp[i][j]:表示考慮前i件物品,背包容量為j時能達到的最大價值。

(2)狀態(tài)轉(zhuǎn)移方程

-如果不選擇第i件物品:dp[i][j]=dp[i-1][j]

-如果選擇第i件物品(前提是w[i]≤j):dp[i][j]=dp[i-1][j-w[i]]+v[i]

-綜合得:dp[i][j]=max(dp[i-1][j],dp[i-1][j-w[i]]+v[i])

(3)邊界條件

-dp[0][j]=0(前0件物品,任何容量都為0)

-dp[i][0]=0(任何物品,容量為0都為0)

(4)計算順序

-自底向上遍歷,先計算i從小到大,j從0到C。

(5)結(jié)果輸出

-最終答案為dp[n][C]。

3.示例

-物品:重量[2,3,4,5],價值[3,4,5,6],背包容量10。

-動態(tài)規(guī)劃表構(gòu)建過程:

-dp[1][0]=0,dp[1][2]=3,dp[1][3]=3,dp[1][4]=3,dp[1][5]=3,dp[1][6]=3,dp[1][7]=3,dp[1][8]=3,dp[1][9]=3,dp[1][10]=3

-dp[2][0]=0,dp[2][2]=3,dp[2][3]=4,dp[2][4]=4,dp[2][5]=4,dp[2][6]=7,dp[2][7]=7,dp[2][8]=7,dp[2][9]=7,dp[2][10]=7

-dp[3][0]=0,dp[3][2]=3,dp[3][3]=4,dp[3][4]=5,dp[3][5]=5,dp[3][6]=7,dp[3][7]=8,dp[3][8]=8,dp[3][9]=8,dp[3][10]=10

-dp[4][0]=0,dp[4][2]=3,dp[4][3]=4,dp[4][4]=5,dp[4][5]=6,dp[4][6]=7,dp[4][7]=8,dp[4][8]=9,dp[4][9]=10,dp[4][10]=10

-最大價值為10(選擇物品1和物品3)。

(二)貪心算法應(yīng)用實例:最小生成樹(Kruskal算法)

1.問題描述

-給定一個無向連通圖,找到一棵包含所有頂點的最小生成樹,使樹中所有邊的權(quán)重之和最小。

2.解決步驟

(1)輸入:邊的列表,每條邊包含權(quán)重、起點和終點。

(2)排序:將所有邊按權(quán)重從小到大排序。

(3)初始化:創(chuàng)建一個并查集結(jié)構(gòu),每個頂點自成一個集合。

(4)遍歷邊:按排序順序依次處理每條邊:

-檢查當(dāng)前邊的兩個頂點是否屬于同一集合。

-如果否:加入這條邊到生成樹中,并將兩個集合合并。

-如果是:跳過這條邊(避免形成環(huán))。

(5)輸出:最終生成樹的所有邊。

3.并查集操作

(1)查找函數(shù):確定頂點屬于哪個集合,支持路徑壓縮優(yōu)化。

(2)合并函數(shù):將兩個集合合并為一個。

4.示例

-圖的邊:[(1,2,2),(1,3,3),(2,3,2),(2,4,4),(3,4,1)]

-排序后邊:[(3,4,1),(1,2,2),(2,3,2),(1,3,3),(2,4,4)]

-處理過程:

-加入(3,4,1),當(dāng)前生成樹:{3,4}

-加入(1,2,2),當(dāng)前生成樹:{1,2}

-加入(2,3,2),檢查1和3在查集不同集合,加入,生成樹:{1,2,3,4}

-跳過(1,3,3)(已形成環(huán))

-跳過(2,4,4)(已形成環(huán))

-最小生成樹邊:[(3,4,1),(1,2,2),(2,3,2)],總權(quán)重6。

七、算法選擇指南

(一)判斷依據(jù)清單

1.問題特性檢查:

-是否存在重疊子問題?(動態(tài)規(guī)劃)

-是否存在最優(yōu)子結(jié)構(gòu)?(動態(tài)規(guī)劃)

-是否滿足貪心選擇性質(zhì)?(貪心)

-貪心選擇:當(dāng)前最優(yōu)解能推導(dǎo)全局最優(yōu)解

-無后效性:子問題最優(yōu)解不影響父問題決策

2.邊界條件評估:

-問題是否允許部分解?(動態(tài)規(guī)劃常處理)

-問題是否要求整數(shù)解?(動態(tài)規(guī)劃更靈活)

3.復(fù)雜度考量:

-空間復(fù)雜度:動態(tài)規(guī)劃需O(nC)存儲

-時間復(fù)雜度:

-貪心:通常O(ElogE)(排序)

-動態(tài)規(guī)劃:O(nC)或O(n^2)

(二)典型場景選擇建議

1.最優(yōu)路徑問題:

-單源最短路徑:Dijkstra(貪心)/Bellman-Ford(動態(tài)規(guī)劃)

-狀態(tài)壓縮DP:適用于路徑依賴復(fù)雜問題

2.背包類問題:

-0/1背包:動態(tài)規(guī)劃

-貪心背包(如分數(shù)背包):貪心算法

3.圖論問題:

-最小生成樹:Prim/Kruskal(貪心)

-最大流:Ford-Fulkerson(動態(tài)規(guī)劃思想)

(三)混合應(yīng)用策略

1.預(yù)處理階段使用貪心:

-對輸入數(shù)據(jù)進行排序或篩選(如最小生成樹前的邊排序)

2.核心求解使用動態(tài)規(guī)劃:

-基于貪心結(jié)果構(gòu)建狀態(tài)空間(如部分背包問題先貪心選擇,再DP計算剩余容量)

3.后處理階段使用貪心:

-對動態(tài)規(guī)劃結(jié)果進行局部優(yōu)化(如調(diào)整解的順序)

八、優(yōu)化技巧與注意事項

(一)動態(tài)規(guī)劃優(yōu)化

1.空間優(yōu)化:

-一維滾動數(shù)組:將二維dp降維(如背包問題只存當(dāng)前行和上一行)

-狀態(tài)壓縮:使用二進制表示狀態(tài)(適用于子集背包問題)

2.時間優(yōu)化:

-備忘錄法:自頂向下計算,避免重復(fù)遍歷

-優(yōu)化狀態(tài)轉(zhuǎn)移:減少不必要的比較(如按權(quán)重大小遍歷)

(二)貪心算法驗證

1.確認貪心選擇性質(zhì):

-證明每步選擇局部最優(yōu)能保證全局最優(yōu)

-反例測試:設(shè)計不滿足貪心性質(zhì)的小規(guī)模測試用例

2.邊界處理:

-空輸入:確保算法能正確返回空解

-極端值:測試最大/最小容量或權(quán)重場景

(三)實際應(yīng)用建議

1.小規(guī)模問題:

-手動計算DP表格,理解狀態(tài)轉(zhuǎn)移

-使用排序+查集驗證貪心正確性

2.大規(guī)模問題:

-使用高效數(shù)據(jù)結(jié)構(gòu)(如線段樹優(yōu)化DP查詢)

-并行計算DP狀態(tài)(適用于多重背包等)

九、總結(jié)與展望

(一)核心總結(jié)

1.方法論差異:

-動態(tài)規(guī)劃:全局視角,分治+存儲

-貪心算法:局部視角,逐步構(gòu)建

2.適用場景圖示:

```

|------------------||------------------|

|問題可分解|------>|貪心選擇可證明|

|重疊子問題||局部最優(yōu)→全局最優(yōu)|

|最優(yōu)子結(jié)構(gòu)||狀態(tài)無后效性|

|------------------||------------------|

```

(二)未來發(fā)展方向

1.算法融合:

-深度優(yōu)先搜索+動態(tài)規(guī)劃(如樹形DP)

-貪心+二分搜索(如最優(yōu)劃分問題)

2.理論深化:

-計算復(fù)雜性理論中的P空間問題

-算法不確定性分析(貪心不可證明時如何調(diào)整)

3.工程實踐:

-算法自動生成工具(根據(jù)問題特性推薦方法)

-硬件加速(GPU并行計算DP狀態(tài)轉(zhuǎn)移)

(三)學(xué)習(xí)建議

1.基礎(chǔ)能力:

-熟練掌握遞歸與迭代

-理解圖論基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)(鄰接表/矩陣)

2.進階訓(xùn)練:

-劃分問題練習(xí)(將大問題分解為小問題)

-貪心貪法訓(xùn)練(設(shè)計反例驗證貪心合理性)

3.實踐途徑:

-刷題平臺分類訓(xùn)練(動態(tài)規(guī)劃/貪心專項)

-算法競賽題目復(fù)盤(分析不同方法優(yōu)劣)

一、引言

動態(tài)規(guī)劃(DynamicProgramming,DP)與貪心算法(GreedyAlgorithm)是算法設(shè)計中的兩種重要方法,它們在解決優(yōu)化問題時具有各自的特點和適用場景。本文旨在通過比較分析這兩種算法的原理、適用條件、優(yōu)缺點及典型案例,幫助讀者深入理解其差異,并總結(jié)其應(yīng)用規(guī)律。

二、動態(tài)規(guī)劃算法

(一)基本原理

動態(tài)規(guī)劃是一種通過將復(fù)雜問題分解為子問題并存儲子問題解來避免重復(fù)計算的方法,適用于具有“重疊子問題”和“最優(yōu)子結(jié)構(gòu)”特性的問題。

1.核心概念

(1)重疊子問題:在問題求解過程中,多個子問題會重復(fù)出現(xiàn)。

(2)最優(yōu)子結(jié)構(gòu):問題的最優(yōu)解包含其子問題的最優(yōu)解。

2.實現(xiàn)步驟

(1)定義狀態(tài):明確問題的狀態(tài)表示(如使用數(shù)組或矩陣)。

(2)狀態(tài)轉(zhuǎn)移方程:建立子問題之間的關(guān)系式。

(3)邊界條件:確定初始狀態(tài)。

(4)計算順序:自底向上或自頂向下(帶備忘錄)。

(二)適用場景

1.典型問題:

-背包問題(0/1背包、完全背包)

-最長公共子序列(LCS)

-斐波那契數(shù)列

2.關(guān)鍵特征:

-問題可分解為無后效性子問題。

-存在大量重疊子問題。

三、貪心算法

(一)基本原理

貪心算法在每一步選擇當(dāng)前最優(yōu)解(局部最優(yōu)),希望最終得到全局最優(yōu)解。它不保存子問題解,而是直接推進。

1.核心概念

(1)局部最優(yōu):每步選擇當(dāng)前最符合條件的解。

(2)全局最優(yōu):最終解滿足整體目標(biāo)最優(yōu)。

2.實現(xiàn)步驟

(1)定義目標(biāo)函數(shù):明確優(yōu)化目標(biāo)(如最小化成本或最大化收益)。

(2)確定貪心選擇屬性:選擇滿足局部最優(yōu)的貪心策略。

(3)構(gòu)建最優(yōu)解:逐步迭代直到完成。

(二)適用場景

1.典型問題:

-荷蘭國旗問題

-最小生成樹(Prim、Kruskal算法)

-單源最短路徑(Dijkstra算法)

2.關(guān)鍵特征:

-問題具有貪心選擇性質(zhì)。

-每次選擇后狀態(tài)不可逆。

四、動態(tài)規(guī)劃與貪心算法的比較

(一)核心差異

1.狀態(tài)保存

-動態(tài)規(guī)劃:存儲子問題解以避免重復(fù)計算。

-貪心算法:不保存解,直接推進。

2.選擇策略

-動態(tài)規(guī)劃:基于狀態(tài)轉(zhuǎn)移方程遞推。

-貪心算法:基于貪心選擇屬性。

3.時間復(fù)雜度

-動態(tài)規(guī)劃:通常較高(如O(n^2)),因需計算所有子問題。

-貪心算法:通常較低(如O(nlogn)),依賴高效選擇策略。

(二)適用性對比

1.問題結(jié)構(gòu)

-動態(tài)規(guī)劃:適用于可分解為子問題的問題。

-貪心算法:適用于具有貪心選擇性質(zhì)的問題。

2.示例對比

-背包問題:動態(tài)規(guī)劃可求解,貪心不可行。

-最小生成樹:Kruskal算法(貪心)有效,而動態(tài)規(guī)劃不適用。

五、總結(jié)

1.應(yīng)用規(guī)律

-動態(tài)規(guī)劃適用于需要全局最優(yōu)且子問題重疊的場景。

-貪心算法適用于局部最優(yōu)可推導(dǎo)全局最優(yōu)的場景。

2.實際選擇

-判斷問題是否滿足貪心選擇性質(zhì)。

-評估計算復(fù)雜度與存儲需求。

3.互補性

-部分問題可結(jié)合兩者(如部分背包問題可先用貪心預(yù)處理)。

六、典型問題詳解與算法實現(xiàn)

(一)動態(tài)規(guī)劃應(yīng)用實例:0/1背包問題

1.問題描述

-給定n種物品和一個容量為C的背包,物品i的重量是w[i],其價值為v[i]。

-背包能承受的最大重量為C,每種物品僅有一件,選擇裝入背包的物品,使得裝入背包中物品的總價值最大。

2.解決步驟

(1)定義狀態(tài)

-dp[i][j]:表示考慮前i件物品,背包容量為j時能達到的最大價值。

(2)狀態(tài)轉(zhuǎn)移方程

-如果不選擇第i件物品:dp[i][j]=dp[i-1][j]

-如果選擇第i件物品(前提是w[i]≤j):dp[i][j]=dp[i-1][j-w[i]]+v[i]

-綜合得:dp[i][j]=max(dp[i-1][j],dp[i-1][j-w[i]]+v[i])

(3)邊界條件

-dp[0][j]=0(前0件物品,任何容量都為0)

-dp[i][0]=0(任何物品,容量為0都為0)

(4)計算順序

-自底向上遍歷,先計算i從小到大,j從0到C。

(5)結(jié)果輸出

-最終答案為dp[n][C]。

3.示例

-物品:重量[2,3,4,5],價值[3,4,5,6],背包容量10。

-動態(tài)規(guī)劃表構(gòu)建過程:

-dp[1][0]=0,dp[1][2]=3,dp[1][3]=3,dp[1][4]=3,dp[1][5]=3,dp[1][6]=3,dp[1][7]=3,dp[1][8]=3,dp[1][9]=3,dp[1][10]=3

-dp[2][0]=0,dp[2][2]=3,dp[2][3]=4,dp[2][4]=4,dp[2][5]=4,dp[2][6]=7,dp[2][7]=7,dp[2][8]=7,dp[2][9]=7,dp[2][10]=7

-dp[3][0]=0,dp[3][2]=3,dp[3][3]=4,dp[3][4]=5,dp[3][5]=5,dp[3][6]=7,dp[3][7]=8,dp[3][8]=8,dp[3][9]=8,dp[3][10]=10

-dp[4][0]=0,dp[4][2]=3,dp[4][3]=4,dp[4][4]=5,dp[4][5]=6,dp[4][6]=7,dp[4][7]=8,dp[4][8]=9,dp[4][9]=10,dp[4][10]=10

-最大價值為10(選擇物品1和物品3)。

(二)貪心算法應(yīng)用實例:最小生成樹(Kruskal算法)

1.問題描述

-給定一個無向連通圖,找到一棵包含所有頂點的最小生成樹,使樹中所有邊的權(quán)重之和最小。

2.解決步驟

(1)輸入:邊的列表,每條邊包含權(quán)重、起點和終點。

(2)排序:將所有邊按權(quán)重從小到大排序。

(3)初始化:創(chuàng)建一個并查集結(jié)構(gòu),每個頂點自成一個集合。

(4)遍歷邊:按排序順序依次處理每條邊:

-檢查當(dāng)前邊的兩個頂點是否屬于同一集合。

-如果否:加入這條邊到生成樹中,并將兩個集合合并。

-如果是:跳過這條邊(避免形成環(huán))。

(5)輸出:最終生成樹的所有邊。

3.并查集操作

(1)查找函數(shù):確定頂點屬于哪個集合,支持路徑壓縮優(yōu)化。

(2)合并函數(shù):將兩個集合合并為一個。

4.示例

-圖的邊:[(1,2,2),(1,3,3),(2,3,2),(2,4,4),(3,4,1)]

-排序后邊:[(3,4,1),(1,2,2),(2,3,2),(1,3,3),(2,4,4)]

-處理過程:

-加入(3,4,1),當(dāng)前生成樹:{3,4}

-加入(1,2,2),當(dāng)前生成樹:{1,2}

-加入(2,3,2),檢查1和3在查集不同集合,加入,生成樹:{1,2,3,4}

-跳過(1,3,3)(已形成環(huán))

-跳過(2,4,4)(已形成環(huán))

-最小生成樹邊:[(3,4,1),(1,2,2),(2,3,2)],總權(quán)重6。

七、算法選擇指南

(一)判斷依據(jù)清單

1.問題特性檢查:

-是否存在重疊子問題?(動態(tài)規(guī)劃)

-是否存在最優(yōu)子結(jié)構(gòu)?(動態(tài)規(guī)劃)

-是否滿足貪心選擇性質(zhì)?(貪心)

-貪心選擇:當(dāng)前最優(yōu)解能推導(dǎo)全局最優(yōu)解

-無后效性:子問題最優(yōu)解不影響父問題決策

2.邊界條件評估:

-問題是否允許部分解?(動態(tài)規(guī)劃常處理)

-問題是否要求整數(shù)解?(動態(tài)規(guī)劃更靈活)

3.復(fù)雜度考量:

-空間復(fù)雜度:動態(tài)規(guī)劃需O(nC)存儲

-時間復(fù)雜度:

-貪心:通常O(ElogE)(排序)

-動態(tài)規(guī)劃:O(nC)或O(n^2)

(二)典型場景選擇建議

1.最優(yōu)路徑問題:

-單源最短路徑:Dijkstra(貪心)/Bellman-Ford(動態(tài)規(guī)劃)

-狀態(tài)壓縮DP:適用于路徑依賴復(fù)雜問題

2.背包類問題:

-0/1背包:動態(tài)規(guī)劃

-貪心背包(如分數(shù)背包):貪心算法

3.圖論問題:

-最小生成樹:Prim/Kruskal(貪心)

-最大流:Ford-Fulkerson(動態(tài)規(guī)劃思想)

(三)混合應(yīng)用策略

1.預(yù)處理階段使用貪心:

-對輸入數(shù)據(jù)進行排序或篩選(如最小生成樹前的邊排序)

2.核心求解使用動態(tài)規(guī)劃:

-基于貪心結(jié)果構(gòu)建狀態(tài)空間(如部分背包問題先貪心選擇,再DP計算剩余容量)

3.后處理階段使用貪心:

-對動態(tài)規(guī)劃結(jié)果進行局部優(yōu)化(如調(diào)整解的順序)

八、優(yōu)化技巧與注意事項

(一)動態(tài)規(guī)劃優(yōu)化

1.空間優(yōu)化:

-一維滾動數(shù)組:

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論