UVa 111 - History Grading (LIS)

題目大意:

老師要改考卷關於歷史的事件排序,我們要寫程式幫老師解決其中一道題目,簡單來說,歷史有很多事件,只要學生們排序歷史事件順序有對,就給予相對應的分數,我們將歷史事件定義成數字,順序則就是數學的遞增。

1,2,3,4 得四分 因為遞增的數列最長可以來到 4
2,1,3,4 得三分,因為 1,3,4 or 2,3,4 這樣的順序都有正確,但順序長度只有 3,所以就輸出 3 分
4,3,2,1 得一分,有這四種 1 or 2 or 3 or 4,而他們遞增長度最高都只能來到 1,因此只有一分。

我們就是要找出,最長的數值遞增長度。

這題的格式: 1 3 2 4 ,其中 1 是表示歷史事件 1 是在第 1 個位置、 3 則是表示歷史事件 2 是在第三個位置,全部的數值都是用此表達方式表達。

閱讀更多...

演算法知識 - Longest Increasing Subsequence 最長遞增子序列(時間複雜度 O(nlogn) 與 時間複雜度 O(n^2))

Longest Increasing Subsequence 介紹

以下簡稱 LIS,在一個陣列中找出最長遞增的序列,序列是甚麼?舉例:

  • 1 3 4 2 5
    則此 LIS 的長度為 3,符合最長長度的有三種:
  • 1,3,4
  • 1,2,5
  • 1,4,5

只要相對位置有達到遞增,且數值也有遞增則符合遞增序列的意思。

在一些數學研究會涉及此演算法,且此演算法有兩種不一樣的時間複雜度,一種為 \(O(N^2)\) 另一種則為 \(O(n /log n)\)

這裡我們則是介紹比較快的方法,\(O(n \log n) \)

閱讀更多...

演算法知識 - Longest Common Subsequence 最長共同子序列(時間複雜度 O(nlogn))

Longest Common Subsequence 介紹

以下簡稱 LCS,在兩個序列中找出最長子序列的問題,序列是甚麼?只要順序一致即可,舉例:

  • people
  • apple
  • 這兩個的 LCS 就是 pple,長度為 4,子序列為 pple。

看懂了嗎? pple 在前面兩個字串中順序都是保持一致的。
被廣泛應用於生物資訊學與版本控制。

這裡我們是教導時間複雜度為 \(O(n \log n)\) 的寫法,而非 \(O(n^2)\) 的寫法

Longest Increasing Subsequence 最長遞增子序列,以下簡稱 LIS

閱讀更多...

UVa10192 - Vacation (LCS)

題目大意:

爸媽想要出國出去玩,可是今年有疫情欸,拔麻,反正爸媽不管且還要求出國的遊玩順序一定要按照他們想法,這讓我非常煩惱,但他們願意略過一些他們想去的地方,但順序必須一樣,試問如果爸媽都有自己的出國遊玩順序再不影響他們順序時他們可以去的最大長度?

注意:這題輸入字串會有 space , uppercase letters , lowercase letters
所以要使用 getline(string,cin) 會是最好的方法

閱讀更多...
  • © 2020-2024 John Doe
  • Powered by Hexo Theme Ayer
  • PV: UV: