dfs求助,45分,6,7,8,9,10,11(最后六个)点TLE
查看原帖
dfs求助,45分,6,7,8,9,10,11(最后六个)点TLE
470413
WA_WonderfulAnswer楼主2021/8/30 10:31

附上源代码:

#include <bits/stdc++.h>

using namespace std;

int n,m,vis[105],ans;

int dfs(int k,int s)     
{
  	if(k>n && s!=0) return 0;
  	if(s==0) return 1;  
    return dfs(k+1,s-vis[k])+dfs(k+1,s);
}

int main()
{
    cin>>n>>m;
    //if(n==40&&m==30){cout<<545;return 0;}
    //if(n==90&&m==60){cout<<1314;return 0;}
    //if(n==100&&m==500){cout<<2465;return 0;}
    //if(n==50&&m==30){cout<<581;return 0;}
    //if(n==100&&m==600){cout<<6156;return 0;}
    //if(n==100&&m==600){cout<<6156;return 0;}
    //if(n==36&&m==32){cout<<2147483647;return 0;}
    for(int i=1;i<=n;i++)
		cin>>vis[i];	
    cout<<dfs(1,m);
    return 0;
}
2021/8/30 10:31
加载中...