代码有注释,是哪里的思路不对吗,样例结果是0
查看原帖
代码有注释,是哪里的思路不对吗,样例结果是0
622751
Gril楼主2022/4/17 13:39
#include<bits/stdc++.h>
using namespace std;
int n,m,res;
int a[10004];
void dfs(int now,int cnt,int rest)  //now是当前是第几种,cnt是这种选了几盆,rest是一共还有几盆没选
{
    if(rest==0){res++;return;}      //全选了结果加一
    if(now>n||cnt>a[now])return;    //越界返回
    for(int i = 0;i < a[now];i++)   //当前这种花,从0盆开始一盆一盆选
        dfs(now,cnt+i,m-i);
    dfs(now+1,cnt,m);               //选完了从下一盆开始选
}
int main()
{
    cin >> n >> m;
    for(int i = 1;i <= n;i++)
        cin >> a[i];
    dfs(1,0,m);
    cout << res;
    return 0;
}

2022/4/17 13:39
加载中...