某天,舟兄考了我一道題:一群人排隊,每個人都朝乙個方向,而且仰視,這意味著只能看到比自己高的人,而且乙個高個子會擋著矮個子。現在給一堆整數,問隊裡,誰能看到的「高個子」最多。
如:0 4 7 2 5 3 2 6 7 8,能「看得最多」的序列是2 5 6 7 8。
一眼望去,真像「最長遞增子串行」,按o(nlogn)的演算法,結果應該是0 2 3 6 7 8。但 0 是看不到 2 的,因為被擋了。
此題用動態規劃很容易解決,d[i]表示從佇列最開始到第i個人,能看到第i個人的最長序列的長度。
初始 d[0] = 1;
遞推 d[i+1] = max , s最後是 o(n^2) 的樣子。比最長遞增子串行的最優演算法要差。暫不知能否提高。
最長遞增子串行問題
給定乙個長度為n的陣列,找出乙個最長的單調自增子序列 不一定連續,但是順序不能亂 例如 給定乙個長度為6的陣列a,則其最長的單調遞增子串行為,長度為4.include define maxn 100 假設最多有100個元素 using namespace std int l maxn l i 表示元...
最長遞增子串行問題
給定正整數序列x1,xn。1 計算其最長遞增子串行的長度s。2 計算從給定的序列中最多可取出多少個長度為s的遞增子串行。3 如果允許在取出的序列中多次使用x1和 xn,則從給定序列中最多可取出多少個長度為s的遞增子串行。設計有效演算法完成 1 2 3 提出的計算任務。由檔案input.txt提供輸入...
最長遞增子串行問題
某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度,但是以後每一發炮彈都不能高於前一發的高度。某天,雷達捕捉到敵國的飛彈來襲。由於該系統還在試用階段,所以只有一套系統,因此有可能不能攔截所有的飛彈。輸入資料為飛彈依次飛來的高度,所...