题解 | #称砝码#

称砝码

http://www.nowcoder.com/practice/f9a4c19050fc477e9e27eb75f3bfd49c

#include <iostream>
using namespace std;

bool find(int sort[120000],int end,int number)
{
    for(int i=0; i<end; i++)
    {
        if(sort[i] == number)
        {
            return true;
        }
    }
    return false;
}
int main()
{
    int num1;
    while(cin>>num1)
    {
        //输入
        int wight[num1];
        for(int i=0; i<num1; i++)
        {
            cin>>wight[i];
        }
        int number[num1];
        for(int i=0; i<num1; i++)
        {
            cin>>number[i];
        }
        int sort[120000];
        sort[0] = 0;
        int tmp = 1;
        for(int i=0; i<num1; i++)
        {
            for(int j=0; j<number[i]; j++)
            {
                sort[tmp] = 0;
                int m = tmp;
                for(int k=0; k<m;k++)
                {
                    if(!find(sort,tmp,sort[k]+wight[i]))
                    {
                        sort[tmp] = sort[k]+wight[i];
                        tmp ++;
                    }
                }
            }
        }

        //输出
        cout<<tmp<<endl;
    }
    return 0;

}
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务