这是一个普通的 DFS, 它会 TLE
void dfs(long long x,long long a=0) {
if(a>c||a+sv[x]<=ans) return;
if(x==0) { ans=a; return; }
dfs(x-1,a+v[x]); dfs(x-1,a);
}
但是如果在递归 dfs(x-1,a+v[x])
时加上 if
,如下
void dfs(long long x,long long a=0) {
if(a>c||a+sv[x]<=ans) return;
if(x==0) { ans=a; return; }
if(a+v[x]<=c)
dfs(x-1,a+v[x]);
dfs(x-1,a);
}
它就以 25ms 的速度 AC 了。。。
这是为什么呢