C++程式:獲取n倍複製序列中最長子序列的長度
假設我們有一個包含n個元素的陣列A。我們可以建立一個新的陣列,該陣列由n箇舊陣列的副本組成,元素首尾相連。我們必須找到新陣列中最長遞增子序列的長度?我們知道,如果p可以透過移除b中的零個或多個元素來獲得,則序列p是陣列b的子序列。陣列的最長遞增子序列是其元素按嚴格遞增順序排列的最長子序列。
問題類別
在資料結構中,陣列是特定型別元素的有限集合。陣列用於在連續的記憶體位置儲存相同型別的元素。陣列被分配一個特定的名稱,並在各種程式語言中透過該名稱引用。要訪問陣列的元素,需要索引。我們使用術語“name[i]”來訪問陣列“name”中位於位置“i”的特定元素。可以使用陣列實現各種資料結構,例如堆疊、佇列、堆和優先佇列。陣列的操作包括插入、刪除、更新、遍歷、搜尋和排序操作。請訪問下面的連結以瞭解更多資訊。
https://tutorialspoint.tw/data_structures_algorithms/array_data_structure.htm
因此,如果我們問題的輸入類似於A = [3, 1, 4, 1, 5, 9],則輸出將為5,因為可能的子序列將為[1, 3, 4, 5, 9]。
步驟
為了解決這個問題,我們將遵循以下步驟:
Define one set s for initialize i := 0, when i < size of A, update (increase i by 1), do: insert A[i] into s return size of s
示例
讓我們看下面的實現來更好地理解:
#include <bits/stdc++.h>
using namespace std;
int solve(vector<int> A){
set<int> s;
for (int i = 0; i < A.size(); i++){
s.insert(A[i]);
}
return s.size();
}
int main(){
vector<int> A = { 3, 1, 4, 1, 5, 9 };
cout << solve(A) << endl;
}輸入
{ 3, 1, 4, 1, 5, 9 }輸出
5
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP