求助,dfs50分,不知道该咋剪枝

P1460 [USACO2.1] 健康的荷斯坦奶牛 Healthy Holsteins

最好改一下你的函数,太复杂了(汗 如下: bool judge(int x) { for (int i = 1; i <= n; i++) { int sum = 0; for (int j = 1; j <= x; j++) sum += b[c[j]][i]; if (sum < a[i]) return false; } return true; } void FIND_OUT(int t, int s) { if (t > m) { if (judge(s)) { if (s < minnum) { minnum = s; for (int i = 1; i <= minnum; i++) { ans[i] = c[i]; } } } return; } c[s + 1] = t; FIND_OUT(t + 1, s + 1); c[s + 1]= 0; FIND_OUT(t + 1, s); } 改成这样的话时间复杂度应该会减少
by Hekaijun @ 2022-07-11 10:35:57


@[Hekaijun](/user/574941) ,太强了(我不会,我就是歌姬)
by fish_jiang @ 2022-07-11 13:41:27


@[MROGfeng](/user/574883) 啊对对对……
by Hekaijun @ 2022-07-12 14:27:42


@[Hekaijun](/user/574941) 啊对对对
by fish_jiang @ 2022-07-12 14:57:40


for(int i=1;i<=g;i++) 改成 i=deep+1 就可以了
by 33IQ猖09 @ 2022-08-29 23:40:26


|