18 int get_sub_score(
char a, 
char b){
    54   return substitution[i][j];
    57 int get_gap_penalty(
int k, 
char a){
    63 void print_matrix(
int h[][max_adapter_size], 
int r, 
int c, std::string read, std::string adap){
    64   for(
int i =0; i< r;i++){
    67       for(
int k =0; k < c-1; k++) std::cout << adap[k] << 
" ";
    70     for(
int j = 0; j < c;j++){
    72     if(i -1 < read.length())
    73       std::cout << read[i-1] << 
" ";
    76     std::cout << 
" " << 
" ";
    77       std::cout << h[i][j] << 
" ";
    84 int*  get_score_cell(
int h[][max_adapter_size], 
int i, 
int j, std::string read, std::string adap){
    86   int *tmp = 
new int[2];
    89   s[0] = h[i-1][j-1] + get_sub_score(read[i-1], adap[j-1]);
    90   s[1] = h[i-1][j] - get_gap_penalty(1, adap[j-1]);
    91   s[2] = h[i][j-1] - get_gap_penalty(1, read[i-1]);
    92   int max = (s[0]>=s[1]) ? s[0] : s[1];
    93   max = (max>=s[2]) ? max : s[2];
    94   max = (max > 0) ? max : 0;
    98   } 
else if(max == s[1]){
   100   } 
else if(max == s[2]){
   106 void print_alignment(
char a[2][max_read_size], 
int n){
   107   std::cout << 
"Alignment: " << std::endl << std::endl;
   108   for(
int j =0;j<2;j++){
   110       std::cout << 
"Read: ";
   112       std::cout << 
"Adap: ";
   113     for(
int i = n -1; i >= 0;i--){
   114       std::cout << a[j][i] << 
" ";
   116     std::cout << std::endl;
   120 int* align_seqs(std::string read, std::string adap){
   121   int h[max_read_size][max_adapter_size],
   122     t[max_read_size][max_adapter_size],
   123     m = read.length() + 1,
   132   rt[1] = read.length();
   134   for(
int i = 0; i < n; i++) h[0][i] = 0;
   136   for(
int i = 0; i < m; i++) h[i][0] = 0;
   138   for(
int i = 1; i < m; i++){
   139     for(
int j = 1; j < n; j++){
   140       tmp = get_score_cell(h, i, j, read, adap);
   157   int _t, _l, _d, _align_n = 0;
   158   char _align[2][max_read_size];
   161     _d = h[max_i-1][max_j-1];
   162     _l = h[max_i][max_j-1];
   163     _t = h[max_i-1][max_j];
   164     switch(t[max_i][max_j]){
   169       _align[0][_align_n] = read[max_i];
   170       _align[1][_align_n] = adap[max_j];
   176       _align[0][_align_n] = 
'-';
   177       _align[1][_align_n] = adap[max_j];
   183       _align[0][_align_n] = read[max_i];
   184       _align[1][_align_n] = 
'-';
   193   print_alignment(_align, _align_n);
   194   if(max_score <= ((_align_n - 2) * unit_score) - get_gap_penalty(2, 
'A') || max_j != 0)