2009-08-16 9 views
3

時間を過ごす方法としてUVaの問題を解決し始めた(6週間で軍隊に行く)。私はJavaを書くのが大好きですが、C/C++を使用することになります。これは、IOが高速で、ボックスデータ、メモリ、または符号なしの使用が不要なためではありません。なぜなら、そのアルゴリズムの効率は重要であるからです。ダイナミックプログラミングについて知りたいことは何ですか?

簡潔に言うと、効率的なアルゴリズムとdpの異なるカテゴリのための/記事/コードベースの作成方法はゆっくりとしています。

クオートマークトウェイン:あなたが困っていることを知らないものではありません。それは確かにそうではないことをあなたが知っているものです。

私は、優先度リストを構築する際の助けを援助します。効率的なアルゴリズムが必要です。

+0

ちょうど好奇心から、C対Javaの時をテストしましたか?本当に良いコーダーがたくさんの言語に移植した1つのケースがありました。その場合、-o3を打つまでJavaはCよりも高速でした。 Cはより高い最適化レベルに飛躍しましたが、2倍以上はないと思います。私はちょうどあなたが持っているかもしれないと聞こえ、私はこれらの行に沿ってより多くのデータポイントを使用することができるため、あなたがテストした場合興味があります... –

+0

用語 "ダイナミックプログラミング"についてもっと詳しく教えてください。動的ディスパッチ(多態性)または動的プログラム生成を意味しますか? –

+0

動的アルゴリズムは通常、どの時間要件よりも速く実行されるか、動的ではありません。効率は問題ではありません。 –

答えて

2

Dynamic Programmingのウィキペディアの記事には、多くの例がある「Algorithms that use dynamic programming」というタイトルのセクションがあります。

practice problems in dynamic programmingのもう1つの良いリストです。

UVa問題リストを参照したので、間違いなくProblem 103 - Stacking Boxesを見てください。この問題は、アルゴリズムLongest Increasing Subsequenceを使用したソリューションに適しています。

+0

UVA 103を試してみて、例を挙げて説明したいのであれば、[このブログの投稿](http://ruslanledesma.com/2016/03/25/stacking-boxes.html)を見てください。 – mrrusof

4

This MIT lectureは、すでにアルゴリズムに精通している場合は、動的プログラミングの良い紹介です。

関連する問題