Selaa lähdekoodia

add tests to Longest Increasing Subsequence

Olivier Marty 8 vuotta sitten
vanhempi
commit
0355f37505

+ 1 - 1
code/LongestIncreasingSubsequence.cc → code/LongestIncreasingSubsequence.cpp

@@ -5,7 +5,7 @@
 //
 //   INPUT: a vector of integers
 //   OUTPUT: a vector containing the longest increasing subsequence
-#define STRICTLY_INCREASNG // buggué
+// #define STRICTLY_INCREASNG // buggué, quand on retrouve la suite ?
 VI LongestIncreasingSubsequence(VI v) {
   VPII best;
   VI dad(v.size(), -1);

+ 17 - 0
code/LongestIncreasingSubsequence2_test.cpp

@@ -0,0 +1,17 @@
+#include <bits/stdc++.h>
+using namespace std;
+
+typedef vector<int> VI;
+typedef pair<int, int> PII;
+typedef vector<PII> VPII;
+
+#include "LongestIncreasingSubsequence.cpp"
+
+int main() {
+  VI v = {1, 2, 3, 4, 7, 4, 5, 6, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
+  VI r = LongestIncreasingSubsequence(v);
+  for(int i = 0; i < r.size()-1; i++)
+    assert(r[i] <= r[i+1]);
+  assert(r.size() == 12);
+  return 0;
+}

+ 18 - 0
code/LongestIncreasingSubsequence_test.cpp

@@ -0,0 +1,18 @@
+#include <bits/stdc++.h>
+using namespace std;
+
+typedef vector<int> VI;
+typedef pair<int, int> PII;
+typedef vector<PII> VPII;
+
+#define STRICTLY_INCREASNG
+#include "LongestIncreasingSubsequence.cpp"
+
+int main() {
+  VI v = {3, 4, 7, 4, 5, 6, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
+  VI r = LongestIncreasingSubsequence(v);
+  for(int i = 0; i < r.size()-1; i++)
+    assert(r[i] < r[i+1]);
+  assert(r.size() == 10);
+  return 0;
+}

+ 4 - 0
code/Makefile

@@ -14,6 +14,10 @@ run: $(TEST_RUN)
 	@echo Compiling $@...
 	@$(CC) -o $@ $<
 
+LongestIncreasingSubsequence2_test: LongestIncreasingSubsequence2_test.cpp LongestIncreasingSubsequence.cpp
+	@echo Compiling $@...
+	@$(CC) -o $@ $<
+
 clean:
 	rm -f $(TEST_EXE)
 

+ 1 - 1
main.tex

@@ -161,7 +161,7 @@ Temps de cuisson : $O(n)$
 \section{Divers}
 
 \subsection{Longest increasing subsequence}
-{\scriptsize\lstinputlisting{code/LongestIncreasingSubsequence.cc}}
+{\scriptsize\lstinputlisting{code/LongestIncreasingSubsequence.cpp}}
 
 \subsection{Maximum rectangle under an histogram / in a matrix}
 {\scriptsize\lstinputlisting{code/BiggestRectangle.cpp}}