Guest User

Untitled

a guest
Jun 25th, 2018
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.17 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int sss1(int* v, int n, int s){
  5. int i, modified = 0;
  6. long long int actual = 0;
  7. for(i = 0; i < n; i++){
  8. if(actual > s && v[i] < 0){
  9. actual += v[i];
  10. modified = 1;
  11. }else if(actual < s && v[i] > 0){
  12. actual += v[i];
  13. modified = 1;
  14. }
  15.  
  16. if(actual == s && modified) return 1;
  17. }
  18. return 0;
  19. }
  20.  
  21. int sss2(int* v, int t, int s){
  22. int i, j, constant, n = 0, p = 0;
  23.  
  24. for(i = 0; i < t; i++){
  25. if(v[i] < 0) n += v[i];
  26. else p += v[i];
  27. }
  28.  
  29. constant = p-n+1;
  30. s -= n;
  31.  
  32. if(s < n || s > p) return 0;
  33.  
  34. int dp[t][p-n+1];
  35. memset(dp, 0, t*(p-n+1));
  36.  
  37. for(i = 0; i < t+1; i++){
  38. for(j = 0; j < constant; j++){
  39. if(!i && j != (v[0] - n))dp[i][j] = 0;
  40. else if(dp[i-1][j] || dp[i-1][j-v[i]-n] || j == v[i]-n)dp[i][j] = 1;
  41. }
  42. }
  43.  
  44. return dp[t-1][s];
  45. }
  46.  
  47. int main(){
  48. int i, n, s;
  49. int* v = (int*)malloc(sizeof(int)*n);
  50. for(i = 0; i < n; i++){
  51. scanf("%d", &v[i]);
  52. }
  53.  
  54. printf("Algoritmo 1: %d\n", sss1(v, n, s));
  55. printf("Algoritmo 2: %d\n", sss2(v, n, s));
  56.  
  57. return 0;
  58. }
Add Comment
Please, Sign In to add comment