题解 | #称砝码#
称砝码
https://www.nowcoder.com/practice/f9a4c19050fc477e9e27eb75f3bfd49c
#include <stdio.h>
#include <string.h>
int main(){
int n;
while(~scanf("%d",&n)){
int wei[n];
int num[n];
int i =0;
for(i=0;i<n;i++)
scanf("%d",&wei[i]);
int numall = 0;
int total = 0;
for(i=0;i<n;i++)
{
scanf("%d",&num[i]);
numall+=num[i];
total+= wei[i]*num[i];
}
int arr[numall];
memset(arr, 0, sizeof(arr));
int k=0;
for(i=0;i<n;i++)
{
int tem = wei[i];
for(int j=0;j<num[i];j++)
{
arr[k++] = tem;
}
}
int wei_exist[total+1];
memset(wei_exist, 0, sizeof(wei_exist));
wei_exist[0]=1;
for(i=0;i<numall;i++)
{
for(int k = total;k>=0;k--)
{
if(wei_exist[k] == 1)
{
wei_exist[k+arr[i]] =1;
}
}
}
int count =0;
for(i=0;i<=total;i++)
{
count +=wei_exist[i];
}
printf("%d",count);
}
}
SHEIN希音公司福利 283人发布
