當前位置:首頁 » 操作系統 » 演算法設計

演算法設計

發布時間: 2022-02-05 09:14:07

『壹』 簡單演算法設計

先排序(許多排序演算法),一般排序演算法(如快速排序、堆排序、歸並排序)時間復雜度都為nlog(n),
再比較兩相鄰數即可復雜度為n, o(n) + o(nlog(n)) = o(nlog(n))
即時間復雜度為 o(nlog(n))

『貳』 演算法設計方法的介紹

《演算法設計方法》一書介紹了演算法描述和演算法分析的基本方法,詳細介紹了各種典型演算法的基本設計思路。演算法是計算機科學的核心內容之一,也是應用電子計算機求解實際問題的基礎。對復雜的實際應用問題的求解,大多都歸結為演算法的設計,然後把求解演算法轉化為計算機程序。

『叄』 演算法設計

按你的意思,每一種商品都有{1,2,3,4,5}這5種重要度嗎?
如果是,就好辦了。
此時,MAX=(P1+P2+……+Pm)*5,演算法的意義就在求MAX1=P1+P2+……+Pm

1、先將商品按價格排序(比如從小到大);
2、Pz=N-Pmin (N為當前持有的錢數也可理解為之前買過商品後剩餘的錢 數;Pmin為商品中最低的價格;Pz只是個中間變數。)
3、以Pz作為價格上限,去購買商品中價格最高的商品。
(剩餘的錢數為N)
4、重復第2到3步,直到第3步條件不滿足,則進行第5步。
5、假如第3步中Pz<Pmin,則直接拿N去購買商品中價格最大的商品。

等等,我這演算法還不夠嚴謹,沒有考慮重復商品的情況。
考慮重復商品的情況要改第2步,這里不能簡單的用(N-Pmin)了。先將這里的Pmin改為Pm吧,這個Pm要重新計算。
計算Pm的步驟:
1、將N/2,取整數部分。
2、在商品價格中從低價向上累加,得到一個<=第1步的整數部分的最大值為Pm

新的演算法:
1、先將商品按價格排序(比如從小到大);
2、計算Pm,將此時的Pm保存下來Pn=Pm。
3、Pz=N-Pm (N為當前持有的錢數也可理解為之前買過商品後剩餘的錢數;Pz只是個中間變數。)
4、以Pz作為價格上限,去購買商品中價格最高的商品。
(剩餘的錢數為N;需要把已購買的那個商品從數組中刪除。)
5、計算新的Pm (經過多次重復後,Pm將為0)
6、重復第3到5步直到Pz<剩餘商品的最低價格。得到一個MAX值。
7、再計算Pm,這時計算方法有點改變,用Pn/2。再把Pm保存下來Pn=Pm
8、重復第3到7步直到Pn為0
9、將各個MAX值進行比較,找出最大值。

如果商品的重要度是1到5的部分或全部,還沒想出來。

『肆』 演算法指什麼,演算法設計有什麼指標

通俗講就是解決問題的方法,用到計算機里,一般指程序設計中用到演算法比較多。也是考研的時候計算機系的一個重點。
演算法是在有限步驟內求解某一問題所使用的一組定義明確的規則。通俗點說,就是計算機解題的過程。在這個過程中,無論是形成解題思路還是編寫程序,都是在實施某種演算法。前者是推理實現的演算法,後者是操作實現的演算法。

一個演算法應該具有以下五個重要的特徵:

有窮性: 一個演算法必須保證執行有限步之後結束;
確切性: 演算法的每一步驟必須有確切的定義;
輸入:一個演算法有0個或多個輸入,以刻畫運算對象的初始情況;
輸出:一個演算法有一個或多個輸出,以反映對輸入數據加工後的結果。沒有輸出的演算法是毫無意義的;
可行性: 演算法原則上能夠精確地運行,而且人們用筆和紙做有限次運算後即可完成。
http://www.cqzxzx.cn/it/noi/shuanfa/001.htm

『伍』 演算法設計怎麼樣

雖然翻譯有些糟糕,很多句子要讀好幾遍才能理解(並不是因為意思多麼復雜),但依然體現了原著在內容結構上優秀的編排。這本書比較適合我,書中的每一個問題,都能體......

『陸』 如何設計演算法

設計一個正確的演算法是一件困難的工作,因為它需要創新,從以太真空中發掘出一個解方案來解決問題。演算法設計比對現有的方案進行改良要難得多,因為演算法設計的可選擇空間太,過多的自由反而成了一種約束。 This book is designed to make you a better algorithm designer. The techniques presented in Part I of this book provide the basic ideas underlying all combinatorial algorithms. The problem catalog of Part II will help you with modeling your application and point you in the right direction of an algorithm or implementation. However, being a successful algorithm designer requires more than book knowledge; it requires a certain attitude, the right problem-solving approach. It is difficult to teach this mindset in a book; yet getting it is essential to become a successful designer. 本書的設計目標是讓你成為一個更好的演算法設計者。本書第一部分展示有關組合演算法的基本原理和基本思想;第二部分的問題清單幫助你為你的問題建模,並且為你指明實現正確演算法的方向。盡管如此,要成為一個成功的演算法設計者光有書本知識是不夠的,面對問題的態度(attitude)和選擇正確的方法更重要。書本容易傳授知識,很難傳授人的心態(mindset)和思考方式;而這種心態和思考卻是成為成功的演算法設計者的根本條件。 The key to algorithm design (or any other problem-solving task) is to proceed by asking yourself a sequence of questions to guide your thought process. What if we do this? What if we do that? Should you get stuck on the problem, the best thing to do is move onto the next question. In any group brainstorming session, the most useful person in the room is the one who keeps asking, ``Why can't we do it this way?'' not the person who later tells them why. Because eventually she will stumble on an approach that can't be shot down. 演算法設計(或其它問題解決任務)的關鍵是一系列持續的自我反問,這些反問引導我們思維的前進。「如果這樣做會怎樣?」,「如果那樣做又會怎樣?」……如果 你被一個問題掐住了,最好的辦法就是先擱一下,換一個問題換一個前進的方向試試。在每組頭腦風暴會議中,最有價值的人是不斷提出為什麼的人,不是爾後解說為什麼的人。因為我們常常被一些習以為常的東西所拌倒,掉進自己設置的陷阱。 kemin:如果問題解決是一種思考過程,那麼思考的形式(過程的嚴謹性、細致性和正確性)很重要,而思考的內容也不容忽視。因為引導我們思考前進的方式 除反問本身外,反問的內容也很重。就比如參加頭腦風暴的材料一樣。人大腦的思維功能是硬編碼的,人與人之間沒有思維規律——質的區別,只是思維的清晰度和 靈敏度——量的差別。人與人之間智力的差別更多體現在思維內容的量上,體現在對外部世界的事實掌握的廣度和深度上。 Towards this end, we provide below a sequence of questions to guide your search for the right algorithm for your problem. To use it effectively, you must not only ask the questions, but answer them. The key is working through the answers carefully, by writing them down in a log. The correct answer to, ``Can I do it this way?'' is never ``no,'' but ``no, because ....'' By clearly articulating(明確有力地表達) your reasoning as to why something doesn't work, you can check if it really holds up or whether you have just glossed(掩蓋) over a possibility that you didn't want to think hard enough about. You will be surprised how often the reason you can't find a convincing(使人信服的) explanation for something is because your conclusion is wrong. 在末尾我們提供一個反問問題的列表,你不但要反問自己這些問題,更重要是仔細回答這些問題,最好把答案寫下來。回答諸如問題「我可以使用這種方式嗎?」的 不是一個「不能」就完了,而是「不能,因為……」。通過仔細明確的回答「為什麼不能」時,你會發現到底是「真的不能「,還是只是你自己不願意去深入思考掩 蓋了」能「。如果你不曾訓練出嚴謹的思考方式,當你這樣做時你會驚訝的發現,為了說明某些東西但卻找不到一個令人信服的解釋的原因常常是因為你的結論本身 是錯的。 An important distinction to keep aware of ring any design process is the difference between strategy and tactics(戰略). Strategy represents the quest for the big picture, the framework around which we construct our path to the goal. Tactics are used to win the minor battles we must fight along the way. In problem solving, it is important to check repeatedly whether you are thinking on the right level. If you do not have a global strategy of how you are going to attack your problem, it is pointless to worry about the tactics. 在設計過程中特別重要區分策略和戰略的概念。策略是對全局的一個探索,一個構築通向目標路徑的指導框架。戰略則是用來解決通向大目標過程的較小的問題。如果你對關於如何對付所面臨的問題沒有一個全局的策略,那關心戰略是不得要領的,予事無補的。在解題領域,不斷修正思維的層次(thinking on the right level)是很重要戰略。(--萊布尼茲曾經將人的解題思考過程比喻成晃篩子,把腦袋裡面的東西都給抖落出來,然後正在搜索的注意力會抓住一切細微的、與問題有關的東西。事實上,要做到能夠令注意力抓住這些有關的東西,就必須時刻將問題放在注意力層面,否則即使關鍵的東西抖落出來了也可能沒注意到。) An example of a strategic question is, ``How best can I model my application as a graph algorithm problem?'' A tactical question might be, ``Should I use an adjacency鄰接 list or adjacency matrix data structure to represent my graph?'' Of course, such tactical decisions are critical to the ultimate quality of the solution, but they can be properly evaluated only in light of a successful strategy. 一個策略問題的例子是:「我如何才能更好地把我的問題建模成圖問題?」。而一個戰略問題可能是這樣:「我是用鄰接列表還是鄰接矩陣來實現我的圖結構?」。當然,這種戰略選擇是對解決方案的最終質量起著重要作用;不過戰略價值的體現還是基於正確的策略的選擇。 When faced with a design problem, too many people freeze up in their thinking. After reading or hearing the problem, they sit down and realize that they don't know what to do next. They stare(凝視) into space, then panic(驚惶), and finally end up settling(沉澱; 決定) for the first thing that comes to mind. Avoid this fate(天數; 運氣; 命運 ). Follow the sequence of questions provided below and in most of the catalog problem sections. We'll tell you what to do next! 初學者在面對問題時常常表現出思維凝滯、手足無措和盲目解題。參考以下的反問問題列表和本書的問題清單,我們告訴你應該怎麼做。 Obviously, the more experience you have with algorithm design techniques such as dynamic programming, graph algorithms, intractability, and data structures, the more successful you will be at working through the list of questions. Part I of this book has been designed to strengthen this technical background. However, it pays to work through these questions regardless of how strong your technical skills are. The earliest and most important questions on the list focus on obtaining a detailed understanding of the problem and do not require specific expertise. 當然本反問問題列表對讀者有背景要求,要求讀者對演算法設計技術(動態規劃、圖演算法、難解性和數據結構)的熟悉程度。本書第一部分的目標就是對這些技術背景進行強化。不過,不管你的技術背景怎樣,通讀這些問題對你解題還是很有裨益的。

『柒』 c語言演算法設計

這里都沒說abcd為整數,解都是無窮多的,還多少組,組得完么,
題目得再限定各個量都為整數,才有可能去舉一舉,
跟演算法沒關體系,只是數學題,沒意思

『捌』 演算法設計有哪些方法

演算法設計常用的幾種方法是
1. 窮舉法
2. 貪心法
3. 分治法
4. 回溯法
5. 分枝限界法
6. 動態規劃法

『玖』 演算法設計題

(再版)
0-1背包問題

0-1背包問題:給定n種物品和一個背包。項目我的體重是無線網路,它的價格是vi背包容量C.

Q:我應該如何選擇裝載物品的背包,使得裝入背包的總價值呢?

選擇項目裝入背包的每個項目我只有兩種選擇,即裝入背包或不裝入背包。項目i裝入背包多次,不僅載入的項目我。

因此,這個問題被稱為0-1背包問題。

?0-1解向量(X1,X2,...,XN),西安∈{0,1},1 <= I <= N。

動態編程解決方案:

集0-1背包問題給定的子最優值,M(I,J),M(我,j)是第j背包容量,可選擇的項目我,我+1,...,N 0-1背包問題的最優值

無效背包()

INT I,J;

為(i = 0; I <=我+ +)
為(J = 0 J <= JMAX; J + +)

M [] [J] = 0;

(i = 0; <= n; i + + )

為(J = 0; <= JMAX; J + +)

(W [I]> J)

米[I] [J] = M [I-1] [J];

其他

M [] [J] = MAX(M [I-1] [J],M [I-1] [JW [我] + V [I]);

printf的(「%d \ N」,M [N] [C]); BR />
}

回溯解決方案:

無效1背包(I)

{
BR />(>),百視通= CV

其他

{

(CW + W [I] <= C )
{

CW + = W [我];

CV + = V [I];

背包(i +1);

CW-= W [I];

CV-= V [I];

}
a>
背包(+1);

}

}

熱點內容
輕應用伺服器適合搭建網站嗎 發布:2024-11-15 11:36:08 瀏覽:246
c語言的百分號 發布:2024-11-15 11:34:24 瀏覽:31
一加五安卓8什麼時候推送 發布:2024-11-15 11:19:40 瀏覽:854
暗影騎士擎有哪些配置 發布:2024-11-15 11:13:46 瀏覽:598
方舟主機專用伺服器是什麼意思 發布:2024-11-15 11:12:23 瀏覽:8
創維最早的伺服器是什麼 發布:2024-11-15 11:11:35 瀏覽:864
手機配置太低怎麼下載原聲 發布:2024-11-15 11:03:31 瀏覽:905
21款奧迪a6配置有哪些 發布:2024-11-15 11:03:20 瀏覽:120
sql內連接外連接 發布:2024-11-15 11:03:19 瀏覽:601
學完python基礎 發布:2024-11-15 11:01:56 瀏覽:63