我用的是前缀和思路来解,首先算出每一位前面所有数字和,接着把数组分成两半,前一半用s[i]表示,后一半用s[n]-s[i]表示,判断相等,成立f=1,break掉,最后到循环外判断,代码实现:
#include<bits/stdc++.h>
using namespace std;
int x,n,s[110],a[110];
int main(){
cin>>x;
while(x--){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
s[i]=s[i-1]+a[i];
}
int f=0;
for(int i=1;i<=n;i++){
if(s[i]==s[n]-s[i]){
f=1;
break;
}
}
if(f==1) cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
return 0;
}
可为啥错了内??