fork download
  1. #include <stdio.h>
  2.  
  3. int MemLIS(int* seq, int* temp, int seq_size)
  4. {
  5. for (int i = seq_size - 1; i >= 0; i--)
  6. {
  7. int max = 0;
  8. for (int j = i + 1; j < seq_size; j++)
  9. {
  10. if (seq[j] > seq[i] && temp[j] > max)
  11. {
  12. max = temp[j];
  13. }
  14. }
  15. temp[i] = max + 1;
  16. }
  17. int max = 0;
  18. for (int i = 0; i < seq_size; i++)
  19. {
  20. if (temp[i] > max)
  21. {
  22. max = temp[i];
  23. }
  24. }
  25. return max;
  26. }
  27.  
  28. int main (void)
  29. {
  30. int data[] = {10,1,30,2,19,3,4,5,6,7,8,9,10,11,12,13,14,15,15,16,15,16,16,16,17,17,16,16,16,16,-1};
  31. int cnt = sizeof(data)/sizeof(data[0]);
  32. int tmp[cnt];
  33. printf("Longest %d in %d\n", MemLIS(data, tmp, cnt), cnt);
  34. return 0;
  35. }
  36.  
Success #stdin #stdout 0s 2292KB
stdin
Standard input is empty
stdout
Longest 17 in 31