Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- int sss1(int* v, int n, int s){
- int i, modified = 0;
- long long int actual = 0;
- for(i = 0; i < n; i++){
- if(actual > s && v[i] < 0){
- actual += v[i];
- modified = 1;
- }else if(actual < s && v[i] > 0){
- actual += v[i];
- modified = 1;
- }
- if(actual == s && modified) return 1;
- }
- return 0;
- }
- int sss2(int* v, int t, int s){
- int i, j, constant, n = 0, p = 0;
- for(i = 0; i < t; i++){
- if(v[i] < 0) n += v[i];
- else p += v[i];
- }
- constant = p-n+1;
- s -= n;
- if(s < n || s > p) return 0;
- int dp[t][p-n+1];
- memset(dp, 0, t*(p-n+1));
- for(i = 0; i < t+1; i++){
- for(j = 0; j < constant; j++){
- if(!i && j != (v[0] - n))dp[i][j] = 0;
- else if(dp[i-1][j] || dp[i-1][j-v[i]-n] || j == v[i]-n)dp[i][j] = 1;
- }
- }
- return dp[t-1][s];
- }
- int main(){
- int i, n, s;
- int* v = (int*)malloc(sizeof(int)*n);
- for(i = 0; i < n; i++){
- scanf("%d", &v[i]);
- }
- printf("Algoritmo 1: %d\n", sss1(v, n, s));
- printf("Algoritmo 2: %d\n", sss2(v, n, s));
- return 0;
- }
Add Comment
Please, Sign In to add comment