杭电1518题,水题,DFS代码,为什么WA?一直找不到错误,跪求大牛们指导

2024-10-31 01:20:21
推荐回答(2个)
回答1:

找你们学校的大牛。谁有心思在百度帮你做题。

回答2:

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
typedef long long ll;

int T;
int n,sum;
int a[25];
int vis[25];
bool ok;

void dfs(int sun,int tot,int pos){
if(tot==4){
ok=true;
return ;
}
if(ok) return ;
for(int i=pos;i if(!vis[i]){
if(sun+a[i]==sum){
vis[i]=1;
dfs(0,tot+1,0);
if(ok) return ;
vis[i]=0;
}
else if(sun+a[i] vis[i]=1;
dfs(sun+a[i],tot,i+1);
if(ok) return ;
vis[i]=0;
}
}
}
}

int main(){
scanf("%d",&T);
while(T--){
sum=0;
scanf("%d",&n);
memset(vis,0,sizeof(vis));
for(int i=0;i scanf("%d",&a[i]);
sum+=a[i];
}
if(n<4 || sum%4) printf("no\n");
else{
sum/=4;
ok=false;
dfs(0,0,0);
if(ok) printf("yes\n");
else printf("no\n");
}
}return 0;
}