#pragma warning(disable:4996);
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
int n, a[22],sum=40;
int counts;
int f(int index) {
//3个边界出口
if (sum < 0) { return 0; }//所选的物品重量超过40
if (sum == 0) { counts++;return 0; }//所选的物品重量等于40
if (index == n) { return 0; }//当前已选择到最后一个物品
for (int i = index;i < n;i++) {
sum -= a[i];
f(i + 1);
sum += a[i];
}
}
int main()
{
while (scanf("%d", &n) != EOF) {
counts = 0;//重置count计数
for (int i = 0;i < n;i++) {
scanf("%d", &a[i]);
}
f(0);
printf("%d\n", counts);
}
return 0;
}
问题 C: 神奇的口袋
最新推荐文章于 2022-02-27 19:24:57 发布