【题解】P1537
大致思路
首先,我们要转化问题,假设弹珠总价值为
Code
#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;
const int MAXN = 10005;
int n = 6, cnt;
int a[MAXN];
int f[MAXN];
int main() {
while (1) {
memset(f, 0, sizeof(f));
int flag = 0, sum = 0; //flag判断是否结束,sum为价值和
for (int i = 1; i <= 6; i++)
scanf("%d", &a[i]), flag |= a[i], sum += a[i] * i;
if (!flag)
break;
cnt++;
if (sum & 1) { //无解的特判
printf("Collection #%d:\nCan't be divided.\n", cnt);
puts("");
continue;
}
f[0] = 1;
for (int i = 1; i <= n; i++) { //多重背包
for (int j = 1; j <= a[i]; j++)
for (int k = sum / 2; k >= i * j; k--)
f[k] |= f[k - i * j];
}
if (!f[sum / 2])
printf("Collection #%d:\nCan't be divided.\n", cnt);
else
printf("Collection #%d:\nCan be divided.\n", cnt);
puts("");
}
return 0;
}
本文来自博客园,作者:zhou_ziyi,转载请注明原文链接:https://www.cnblogs.com/zhouziyi/p/16526578.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具