Sum It Up(https://acs.jxnu.edu.cn/problem/HDU1258)

给定一个目标和t及包含n个整数的列表,找出所有不同的整数组合,使得它们的和等于t。例如,当t=4,n=6,列表为[4,3,2,2,1,1]时,有4种不同的组合:4, 3+1, 2+2, 2+1+1。输入包括多个测试用例,每个用例包含t,n和n个整数,最后n=0表示结束。输出需列出所有组合,按特定排序规则并确保组合唯一。
摘要由CSDN通过智能技术生成

描述:

Given a specified total t and a list of n integers, find all distinct sums using numbers from the list that add up to t. For example, if t=4, n=6, and the list is [4,3,2,2,1,1], then there are four different sums that equal 4: 4,3+1,2+2, and 2+1+1.(A number can be used within a sum as many times as it appears in the list, and a single number counts as a sum.) Your job is to solve this problem in general.

输入:

The input will contain one or more test cases, one per line. Each test case contains t, the total, followed by n, the number of integers in the list, followed by n integers x1,...,xn. If n=0 it signals the end of the input; otherwise, t will be a positive integer less than 1000, n will be an integer between 1 and 12(inclusive), and x1,...,xn will be positive integers less than 100. All numbers will be separated by exactly one space. The numbers in each list appear in nonincreasing order, and there may be repetitions.

输出:

For each test case, first output a line containing 'Sums of', the total, and a colon. Then output each sum, one per line; if there are no sums, output the line 'NONE'. The numbers within each sum must appear in nonincreasing order. A number may be repeated in the sum as many times as it was repeated in the original list. The sums themselves must be sorted in decreasing order based on the numbers appearing in the sum. In other words, the sums must be sorted by their first number; sums with the same first number must be sorted by their second number; sums with the same first two numbers must be sorted by their third number; and so on. Within each test case, all sums must be distince; the same sum connot appear twice.

翻译:给定一个具体的数t和由n个整数组成的列表,求出不同由列表中的整数和为t的组合.举个栗子,t=4,n=6,列表中{4,3,2,2,1,1},然后可得出有4种不同的关于整数和为4的组合:4,3+1,2+2,2+1+1.(一个数字可以使用多次,并且组合中允许只有一个数字)你需要求出该问题的通解.

输入:输入有1个或者更多的测试样例。每个一行.每行先输入和数t,接着是数字n,然后输入整数x1到xn.如果n=0就标记为停止输入.否则t须为一个小于1000的正整数,1<=n<=12,0<x<100.所有数字空一格.列表中数字并非呈递增顺序并且可能存在重复.

输出:每个测试样例,首先输出一行“Sums of”然后输出t和冒号.然后输出总数和的组合,每个一行.如果没有组合,在一行输出“NONE”.其中数字组合需为降序排列并且存在重复.换句话说,总数必须按照第一个数字排序.相同第一个数字的总和必须按其第二个数字排序;具有相同前两个数字的总和必须按其第三个数字排序,以此类推.每个测试样例,所有总数必须为唯一的,不能出现两次.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值