多处使用 malloc,很不好看。只 WA 了两个点,样例全过。
#include <iostream>
long n, l[131072], **arr;
int dfs(int, long, long);
int main() {
using namespace std;
long x;
cin >> n >> x;
arr = static_cast<long**>(malloc(sizeof(long*) * n));
for(int i = 0; i < n; i++)
{
cin >> l[i];
arr[i] = static_cast<long*>(malloc(sizeof(long) * l[i]));
for (int j = 0; j < l[i]; j++)
cin >> arr[i][j];
}
cout << dfs(0, 1, x) << endl;
return 0;
}
int dfs(int pocket, long sum, long dst) {
if(pocket == n)
{
if (sum == dst)
return 1;
return 0;
}
int ans = 0;
for (int i = 0; i < l[pocket]; i++)
ans += dfs(pocket + 1, sum * arr[pocket][i], dst);
return ans;
}