Skip to content

Instantly share code, notes, and snippets.

@growlnx
Last active March 19, 2018 02:44
Show Gist options
  • Save growlnx/b19574dacb7705493f8d69631bd14bea to your computer and use it in GitHub Desktop.
Save growlnx/b19574dacb7705493f8d69631bd14bea to your computer and use it in GitHub Desktop.
#include "bits/stdc++.h"
using namespace std;
// subsequencia comum mais longa Programacao Dinamica
int scml(string a, string b){
// tabela programacao dinamica
vector < vector < int > > tabela;
// cria tabela
for (int cont = 0; cont < a.size() + 1; cont++)
tabela.push_back(vector < int > (a.size() + 1, 0));
// comparar subsequencias
for (int cont = 0; cont < a.size(); cont++) {
for (int cont2 = 0; cont2 < b.size(); cont2++) {
if (a[cont] == b[cont2]) {
// pega o valor da diagonal e incrementa
tabela[cont + 1][cont2 + 1] = tabela[cont][cont2] + 1;
} else {
// maximo entre os valores anterior e superior
tabela[cont + 1][cont2 + 1] = max(tabela[cont][cont2 + 1], tabela[cont + 1][cont2]);
}
}
}
return tabela.back().back();
}
int main(void) {
// strings precisam ter mesmo tamamnho
cout << scml("AAA", "AAB") << endl;
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment