#include<bits/stdc++.h>
using namespace std;
int k,m,a[10][110],f[10];
long long ans;
void dfs(int x,long long s){
if(x==k+1){
if(s>m)ans++;
return;
}if(s>m){
long long n=1;
for(int i=x;i<=k;i++){
n=n*(f[x]+1);
}ans+=n;
return;
}for(int i=0;i<=f[x];i++){
dfs(x+1,s+a[x][i]);
}
}
int main(){
cin>>k>>m;
for(int i=1;i<=k;i++){
cin>>f[i];
for(int j=1;j<=f[i];j++){
cin>>a[i][j];
}
}dfs(1,0);
cout<<ans;
return 0;
}
求助大佬
题面给你
现在有
�
k类物品,每类物品有
�
�
A
i
个,每个物品的价值为
�
�
V
j
,每类物品只能选一个,现在问你一共有多少种方案使得选出来的总价值大于
�
M。
注意,每类物品最多只能选一个,也可以不选。
输入描述
第一行输入两个整数
�
k和
�
(
1
≤
�
≤
6
,
1
≤
�
≤
1
0
8
)
M(1≤k≤6,1≤M≤10
8
),分别表示物品的种类和目标价值。
接下来
�
k行,每行先输入一个整数
�
�
(
1
≤
�
�
≤
100
)
A
i
(1≤A
i
≤100),表示该类物品的数量,接下来输入
�
�
A
i
个数,
�
�
,
1
,
�
�
,
2
,
.
.
.
,
�
�
,
�
�
(
1
≤
�
�
,
�
≤
1
0
8
)
V
i,1
,V
i,2
,…,V
i,A
i
(1≤V
i,j
≤10
8
),表示每个物品的价值。
输出描述
输出一个整数,表示方案数。
30哇