Advertisement
Guest User

Scoring Matrix

a guest
Nov 13th, 2019
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.16 KB | None | 0 0
  1. scoring_matrix create_matrix(const char *a, const char *b, int match_score, int gap_cost)
  2. {
  3.  
  4. int height = strlen(a)+1;
  5. int width = strlen(b)+1;
  6.  
  7.  
  8. int* flatrix = malloc((height*width)*sizeof(int));
  9. memset(flatrix, 0, (height*width)*sizeof(int));
  10.  
  11. int val, rowC, colC, topVal, leftVal, cornerVal;
  12. for(rowC = 1; rowC < height; rowC++){
  13. for(colC = 1; colC < width; colC++){
  14. topVal = (flatrix[(width*(rowC-1))+colC] - gap_cost);
  15. leftVal = (flatrix[(width*rowC)+(colC-1)] - gap_cost);
  16.  
  17. cornerVal = flatrix[(width*(rowC-1))+(colC-1)];
  18. if((a[rowC-1]) == (b[colC-1])){
  19. cornerVal = cornerVal + match_score;
  20. }else{
  21. cornerVal = cornerVal - match_score;
  22. }
  23. val = 0;
  24. if(topVal > val){
  25. val = topVal;
  26. }if(leftVal > val){
  27. val = leftVal;
  28. }if(cornerVal > val){
  29. val = cornerVal;
  30. }flatrix[(width*rowC)+colC] = val;
  31.  
  32. }
  33. }
  34. scoring_matrix matrix = {width, height, flatrix};
  35. return matrix;
  36. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement