最好改一下你的函数,太复杂了(汗
如下:
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