solution.cpp 662 字节
Newer Older
每日一练社区's avatar
每日一练社区 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
#include <iostream>
using namespace std;
int a[10000], N, i, ans = 0;
void findAns(int a[], int start, int An) //国家可派出数组a,当前派出第start国家,已经组合An人
{
	if (start == N) //找到最后一个国家后
	{
		if (An == 5)
			ans++; //如果组合人数An等于派出人数5;
		return;
	}

	for (i = 0; i <= a[start]; i++) //派出第n个国家人数的人数,需检查人数是否满足规范
	{
		findAns(a, start + 1, An + i); //查找下一个国家,记录已经组合数An
	}
}
int main()
{
	//输入规模及数据
	cin >> N;
	for (i = 0; i < N; i++)
	{
		cin >> a[i];
	}
	findAns(a, 0, 0);

	cout << ans << endl;
	return 0;
}