#include <iostream> using namespace std; const int N = 50; int path[N]; bool visit[N]; int a[N]; int sum_weight; int sum_method; int n; void DFS(int u, int position){//position参数的作用:控制从左往右进行搜索,避免重复搜索 if(sum_weight == 40){ sum_method ++; return; } for(int i = position; i < n; i ++){ if(!visit[i] && sum_weight + a[i] <= 40){ visit[i] = true; path[u] = i; sum_weight += a[i]; DFS(u + 1, i + 1); sum_weight -= a[i]; visit[i] = false; } } } int main() { cin >> n; for(int i = 0; i < n; i ++){ cin >> a[i]; } DFS(0, 0); cout << sum_method << endl; return 0; }