uva 10664 Luggage

这一道题和uva562类似 ,题意是:问能否平分行李

博主为朱老师的弟子

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
using namespace std;
const int Max = 102;
int coin[Max], dp[Max*500];
int sum;
int m, n;
char ch;
void inital()
{
     memset(dp, 0, sizeof(dp));
      dp[0] = 1;
      sum = 0;
      m = -1;
}
int main()
{

    scanf("%d", &n);
    getchar();
    while(n--)
    {

        inital();
      //  scanf("%d", &m);
        while(1)
        {
            m++;
            scanf("%d", &coin[m]);
            sum += coin[m];

            ch = getchar();
           // printf("%c\n",ch);
            if(ch == '\n')
                break;
              //  printf("coin  ------ %d ------ %d\n",m,coin[m]);

        }

        for(int i=0; i<=m; i++)       // 666 遍历一遍
            for(int j=sum; j>=coin[i]; j--)
            {
                if(dp[j-coin[i]])
                    dp[j] = 1;
            }

        int i;
        for(i=sum/2; i>=0; i--)
            if(dp[i])
             break;
        if( sum - 2 * i)
            printf("NO\n");
        else
            printf("YES\n");
    }
    return 0;
}

你可能感兴趣的:(uva 10664 Luggage)