240114
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
#include <iostream>
|
||||
|
||||
using namespace std;
|
||||
|
||||
int count(int step, int l, int r, int a[])
|
||||
{
|
||||
if (step == 0)
|
||||
{
|
||||
if (l + a[0] == r || r + a[0] == l)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
return count(step - 1, l + a[step], r, a) + count(step - 1, l, r + a[step], a);
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
|
||||
int n;
|
||||
cin >> n;
|
||||
int a[n];
|
||||
for (int i = 0; i < n; i++)
|
||||
{
|
||||
cin >> a[i];
|
||||
}
|
||||
cout << count(n - 1, 0, 0, a) / 2;
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
对抗赛(compete)
|
||||
内存限制:128 MB
|
||||
时间限制:5.000 S
|
||||
评测方式:文本比较
|
||||
命题人:jixun2019
|
||||
提交:279
|
||||
解决:182
|
||||
题目描述
|
||||
程序设计对抗赛设有 N(0<N≤50 的整数)个价值互不相同的奖品,每个奖品的价值分 别为 S1,S2,S3……Sn(均为不超过 100 的正整数)。现将它们分给甲乙两队,为了使得甲 乙两队得到相同价值的奖品,必须将这 N 个奖品分成总价值相等的两组。
|
||||
编程要求:对给定 N 及 N 个奖品的价值,求出将这 N 个奖品分成价值相等的两组,共有 多少种分法?
|
||||
例如:N = 5,S1,S2,S3……Sn 分别为 1,3,5,8,9
|
||||
则可分为{1,3,9}与{5,8}
|
||||
仅有 1 种分法;
|
||||
例如:N = 7,S1,S2,S3……Sn 分别为 1,2,3,4,5,6,7
|
||||
则可分为:
|
||||
{1,6,7}与{2,3,4,5}
|
||||
{2,5,7}与{1,3,4,6}
|
||||
{3,4,7}与{1,2,5,6}
|
||||
{1,2,4,7}与{3,5,6}
|
||||
有 4 种分法。
|
||||
输入
|
||||
输入文件中包含 N 及 S1,S2,S3……Sn。(每两个相邻的数据之间有一个空格隔开)。
|
||||
输出
|
||||
输出文件包含一个整数,表示多少种分法的答案,数据若无解,则输出 0。
|
||||
样例输入 复制
|
||||
7
|
||||
1 2 3 4 5 6 7
|
||||
样例输出 复制
|
||||
4
|
||||
Reference in New Issue
Block a user