C语言经典练习题

题目如下

QQ图片20201114160625.png

实现代码

    #include <stdio.h>
    
    int n;
    int a[] = {21, 5, 38, 11, 10, 17, 15, 27, 25, 42, 22, 8, 26, 13, 16, 37, 1, 24, 31, 19, 2, 14, 28, 3, 33, 23, 43, 20, 12, 14};
    
    int equa(int *b, int k, int m, int min, int max)
    {
         int x;
         if (m > n)
              return -1;
         if (min >= max)
         {
              if (min == max)
              {
                   return k;
              }
              else
                   return -1;
         }
         b[k] = m;
         if ((x = equa(b, k + 1, m + 1, min + a[m], max - a[m])) > 0)
              return x;
         if ((x = equa(b, k, m + 1, min, max)) > 0)
              return x;
         return -1;
    }
    int main()
    {
         int b[29];
         int i, j, max = 0;
         n = sizeof(a) / sizeof(a[0]);
         for (i = 1; i < n; i++)
         {
              max += a[i];
         }
         b[0] = 0;
         if (equa(b, 1, 1, a[0], max) > 0)
              printf("Yes\n");
         else
              printf("NO\n");
         return 0;
    }
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 共1条
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    请登录后查看评论内容