Advertisement
bkit4s0

[dp function] error

Jan 1st, 2015
196
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.63 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4. #define MAX 10
  5. void split(char s[], char s1[], char s2[])
  6. {
  7.         int l, m;
  8.         int i,j;
  9.         l = strlen(s);
  10.         m = l/2;
  11.         for (i = 0; i < m; ++i)
  12.         {
  13.                 s1[i] = s[i];
  14.                 //s2[i] = s[l - m + i]; // can't use to split s2
  15.         }
  16.         s1[i] = '\0';
  17.         for (i = m; i < l; ++i)
  18.         {
  19.                 s2[i-m] = s[i];
  20.         }
  21.         s2[i-m] = '\0';
  22. }
  23. int numofA(char s[])
  24. {
  25.         int count;
  26.         count = 0;
  27.         for (int i = 0; i < strlen(s); ++i)
  28.         {
  29.                 if(s[i] == 'A')
  30.                         count++;
  31.         }
  32.         return count;
  33. }
  34. int max(int x, int y)
  35. {
  36.         int result;
  37.         if(x > y)
  38.                 result = x;
  39.         else
  40.                 result = y;
  41.         return result;
  42. }
  43. int dp(int v, int a, int e)
  44. {
  45.     int n;
  46.     int result = 0;
  47.     int a1,e1,v1,a2,e2,v2;
  48.     n = a+e;
  49.     for (a1 = 0; a1 <= a; ++a1)
  50.     {
  51.         a2 = a - a1;
  52.         e2 = n/2-a2;
  53.         e1 = e - e2;
  54.         for (v1 = 0; v1 <= v-a; ++v1)
  55.         {
  56.             for (v2 = 0; v2 < v-a; ++v2)
  57.             {
  58.                 if (max(v1,v2) == v-a)
  59.                 {
  60.                     result+=dp(v1,a1,e1)*dp(v2,a2,e2);
  61.                 }
  62.             }
  63.         }
  64.     }
  65.     return result;
  66. }
  67. int hash(char s[])
  68. {
  69.         int result;
  70.         char s1[MAX], s2[MAX];
  71.         result = numofA(s);
  72.         if(strlen(s) > 1)
  73.         {
  74.                 split(s,s1,s2);
  75.                 result += max(hash(s1),hash(s2));
  76.         }
  77.         return result;
  78. }
  79. int main(int argc, char const *argv[])
  80. {
  81.         char s[] = "AE";
  82.         //int l;
  83.         //l =strlen(s);
  84.         printf("%d\n", dp(4,2,8));
  85.         system("pause");
  86.         return 0;
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement