Skip to content

Commit 55d3996

Browse files
committed
dp_up::date
1 parent ac00fa9 commit 55d3996

File tree

10 files changed

+119
-1
lines changed

10 files changed

+119
-1
lines changed

DP/LCS_loop.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
int longestCommonSubsequence(string text1, string text2) {
2+
int dp[text1.size() + 1][text2.size() + 1];
3+
memset(dp, 0, sizeof(dp));
4+
for(int i = 1; i < text1.size() + 1; i++){
5+
for(int j = 1; j < text2.size() + 1; j++){
6+
if(text1[i - 1] == text2[j - 1]){
7+
dp[i][j] = 1 + dp[i - 1][j - 1];
8+
}
9+
else{
10+
dp[i][j] = max(dp[i][j - 1], dp[i - 1][j]);
11+
}
12+
}
13+
}
14+
return dp[text1.size()][text2.size()];
15+
}

DP/LCS_memory_efficient_1loop.cpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
int longestCommonSubsequence(string text1, string text2) {
2+
int le = text2.size() + 1, p;
3+
vector<int> st(le, 0);
4+
for(int i = 1; i < text1.size() + 1; i++){
5+
p = 0;
6+
for(int j = 1; j < text2.size() + 1; j++){
7+
int bu = st[j];
8+
if(text1[i - 1] == text2[j - 1]) st[j] = p + 1;
9+
else st[j] = max(st[j], st[j - 1]);
10+
p = bu;
11+
}
12+
}
13+
return st[text2.size()];
14+
}

DP/LCS_memory_efficient_2loop.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
int longestCommonSubsequence(string text1, string text2) {
2+
int le = text2.size() + 2;
3+
int ans = 0;
4+
vector<int> prev(le, 0), cur(le, 0);
5+
for(int i = 1; i < text1.size() + 1; i++){
6+
for(int j = 1; j < text2.size() + 1; j++){
7+
if(text1[i - 1] == text2[j - 1]) cur[j] = 1 + prev[j - 1];
8+
else cur[j] = max(cur[j - 1], prev[j]);
9+
}
10+
for(int j = 0; j < text2.size() + 1; j++) prev[j] = cur[j];
11+
}
12+
return cur[text2.size()];
13+
}

DP/LCS_recursion.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
int fnc(int i, int j, string s, string t){
2+
if(i == s.size() || j == t.size()) return 0;
3+
if(dp[i][j] != 0) return dp[i][j];
4+
int ans = 0;
5+
if(s[i] == t[j]) ans = 1 + fnc(i + 1, j + 1, s, t);
6+
else ans = max(fnc(i + 1, j, s, t, ), fnc(i, j + 1, s, t));
7+
return dp[i][j] = ans;
8+
}

code_book.cpp

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -929,7 +929,8 @@ int main(){
929929
printf("%d\n", ans[ans.size() - 1]);
930930
return 0;
931931
}
932-
------------------------------------------------------------ recursionallPossibleSubSet
932+
------------------------------------------------------------
933+
recursionallPossibleSubSet
933934
------------------------------------------------------------
934935
#include <bits/stdc++.h>
935936
#define le 10002
@@ -947,6 +948,43 @@ int main(){
947948
}
948949
return 0;
949950
}
951+
------------------------------------------------------------
952+
N_queens_problem
953+
------------------------------------------------------------
954+
vector<vector<string>> ans;
955+
bool ck(vector<string>& s, int r, int c){
956+
for(int i = 0; i < s.size(); i++) if(s[i][c] == 'Q') return false;
957+
for(int i = r, j = c; i >= 0 && j >= 0; i--, j--) if(s[i][j] == 'Q') return false;
958+
for(int i = r, j = c; i >= 0 && j < s.size(); i--, j++) if(s[i][j] == 'Q') return false;
959+
return true;
960+
}
961+
void fnc(vector<string>& s, int r){
962+
if(r == s.size()){
963+
ans.push_back(s);
964+
return;
965+
}
966+
for(int i = 0; i < s.size(); i++){
967+
if(ck(s, r, i)){
968+
s[r][i] = 'Q';
969+
fnc(s, r + 1);
970+
s[r][i] = '.';
971+
}
972+
}
973+
}
974+
vector<vector<string>> solveNQueens(int n) {
975+
vector<string> N;
976+
for(int i = 0; i < n; i++){
977+
string s = "";
978+
for(int j = 0; j < n; j++) s += '.';
979+
N.push_back(s);
980+
}
981+
fnc(N, 0);
982+
return ans;
983+
}
984+
------------------------------------------------------------
985+
LCS && path
986+
------------------------------------------------------------
987+
950988
------------------------------------------------------------
951989
LCS && path
952990
------------------------------------------------------------
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
vector<vector<string>> ans;
2+
bool ck(vector<string>& s, int r, int c){
3+
for(int i = 0; i < s.size(); i++) if(s[i][c] == 'Q') return false;
4+
for(int i = r, j = c; i >= 0 && j >= 0; i--, j--) if(s[i][j] == 'Q') return false;
5+
for(int i = r, j = c; i >= 0 && j < s.size(); i--, j++) if(s[i][j] == 'Q') return false;
6+
return true;
7+
}
8+
void fnc(vector<string>& s, int r){
9+
if(r == s.size()){
10+
ans.push_back(s);
11+
return;
12+
}
13+
for(int i = 0; i < s.size(); i++){
14+
if(ck(s, r, i)){
15+
s[r][i] = 'Q';
16+
fnc(s, r + 1);
17+
s[r][i] = '.';
18+
}
19+
}
20+
}
21+
vector<vector<string>> solveNQueens(int n) {
22+
vector<string> N;
23+
for(int i = 0; i < n; i++){
24+
string s = "";
25+
for(int j = 0; j < n; j++) s += '.';
26+
N.push_back(s);
27+
}
28+
fnc(N, 0);
29+
return ans;
30+
}
File renamed without changes.
File renamed without changes.
File renamed without changes.

0 commit comments

Comments
 (0)