3 条题解

  • 0
    @ 2026-8-13 16:37:12
    using namespace std;
    const int N=1e4+10;
    int a[N],sum=0,n;
    bool vis[N];
    bool dfs(int cnt,int ans){
    if(cnt>sum){
    return false;
    }
    if(cnt==sum){
    ans++;
    if(ans==3){
    return true;
    }
    cnt=0;
    }
    for(int i=1;i<=n;i++){
    if(vis[i]){
    continue;
    }
    vis[i]=true;
    if(dfs(cnt+a[i],ans)){
    return true;
    }
    
    vis[i]=false;
    }
    return false;
    
    
    }
    int main (){
    freopen("triangle.in", "r", stdin);
    freopen("triangle.out", "w", stdout);
    cin>>n;
    for(int i=1;i<=n;i++){
    cin>>a[i];
    sum+=a[i];
    }
    if(sum%3!=0){
    cout<<"no";
    return 0;
    }
    sum/=3;
    if(dfs(0,0)){
    cout<<"yes";
    }else{
    cout<<"no";
    }
    return 0;
    }
    

    信息

    ID
    548
    时间
    2000ms
    内存
    256MiB
    难度
    9
    标签
    (无)
    递交数
    508
    已通过
    32
    上传者