会员
众包
新闻
博问
闪存
赞助商
HarmonyOS
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
Fancy Mouse
- -|||
博客园
首页
新随笔
新文章
联系
订阅
管理
TJU1049
对于任何一个重量都存储一个状态变量,将0重量初始化为1,然后遍历所有砝码,碰到i是1,就将i+wj*k,k=1~nj都设置为1。最后遍历状态变量统计1的数量
#include
<
iostream
>
using
namespace
std;
int
main()
{
int
status[
20001
],i,j,data,quantity,weight[
20
],number[
20
],max;
cin
>>
data;
while
(data
--
>
0
)
{
for
(i
=
0
;i
<
20001
;i
++
) status[i]
=
0
;
cin
>>
quantity;
max
=
0
;
status[
0
]
=
1
;
for
(i
=
0
;i
<
quantity;i
++
)
cin
>>
weight[i];
for
(i
=
0
;i
<
quantity;i
++
)
cin
>>
number[i];
while
(quantity
--
>
0
)
{
for
(i
=
max;i
>=
0
;i
--
)
if
(status[i])
{
for
(j
=
1
;j
<=
number[quantity]
&&
i
+
weight[quantity]
*
j
<
20001
;j
++
)
status[i
+
weight[quantity]
*
j]
=
1
;
if
(max
<
i
+
weight[quantity]
*
(
--
j))
max
=
i
+
weight[quantity]
*
j;
}
}
for
(quantity
=
i
=
0
;i
<=
max;i
++
)
if
(status[i]) quantity
++
;
cout
<<
quantity
<<
endl;
}
return
0
;
}
posted on
2005-10-05 02:15
Fancy Mouse
阅读(
295
) 评论(
1
)
收藏
举报
刷新页面
返回顶部