南阳理工OJ_题目546 Divideing Jewels

来源:互联网 发布:linux无线网卡驱动 编辑:程序博客网 时间:2024/05/16 06:27
#include <iostream>using namespace std;int a[15];int flag;int aaa;int sum;int V;int d[100010];int main(){    int co = 0;    aaa = 0;    sum = 0;    for(int i = 1; i <= 10; i++)    {        cin >> a[i];        aaa += a[i];        if(a[i] != 0)            sum += a[i] * i;    }    while(aaa > 0)    {        co++;        flag = 1;        if(sum % 2)            flag = 0;        if(flag == 1)        {            for(int i = 1; i <= sum+1; i++)                d[i] = -1 << 30;            d[0] = 0;            V = sum / 2;            for(int i = 1; i <= 10; i++)                for(int j = 1; j<= a[i]; j++)                {                    for(int k = V; k >= i; k--)                        d[k] = d[k] > d[k-i] + i ? d[k] : d[k-i] + i;                }            if(d[V] > 0)                flag = 1;            else                flag = 0;        }        if(flag == 1)            cout << "#" << co << ":Can be divided.\n";        else            cout << "#" << co << ":Can't be divided.\n";        aaa = 0;        sum = 0;        for(int i = 1; i <= 10; i++)        {            cin >> a[i];            aaa += a[i];            if(a[i] != 0)                sum += a[i] * i;        }    }}

0 0
原创粉丝点击