VOJ 等边三角形 题解 DFS

等边三角形

在这里插入图片描述

代码

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int n, flag = 0, sum = 0, tag;
int length[20];     // 木棍长度
int group[3] = {0}; // 三条边的当前边长
void dfs(int i, int index)
{
    group[index] += length[i];
    if (group[1] > tag || group[0] > tag || group[2] > tag) // 剪枝:一旦有一条边长度大于预期边长tag,该方案不满足
    {
        group[index] -= length[i]; // 回溯
        return;
    }
    if (group[0] == tag && group[1] == tag) // 一旦有两条边可以达到预期边长tag,则可以构成等边三角形
    {
        flag = 1;
        return;
    }
    if (i + 1 < n) // 判断:如果没有遍历完所有木棍,则继续递归,否则终止递归
    {
        // 递归下一根木棍放到三条边中的三种情况
        if (!flag)
            dfs(i + 1, 0);
        if (!flag)
            dfs(i + 1, 1);
        if (!flag)
            dfs(i + 1, 2);
    }
    group[index] -= length[i]; // 回溯
    return;
}

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    cin >> n; // 木棍数量
    for (int i = 0; i < n; i++)
    {
        cin >> length[i];
        sum += length[i]; // 统计总长度
    }
    tag = sum / 3;    // 等边三角形边长
    if (sum % 3 == 0) // 总长度能被3整除是能构成等边三角形的前提
        dfs(0, 0);
    if (flag)
        cout << "yes";
    else
        cout << "no";
    return 0;
}

相关推荐

  1. VOJ 扑克牌 题解 01背包dp

    2024-04-21 04:08:02       14 阅读
  2. 有向图的DFS(c++题解)

    2024-04-21 04:08:02       19 阅读
  3. 璨与序列 题解(stl,dfs)

    2024-04-21 04:08:02       8 阅读
  4. VOJ 圣诞树 题解 最短路径 dijkstra算法

    2024-04-21 04:08:02       9 阅读
  5. VOJ 迷阵突围 题解 次短路径 dijkstra算法

    2024-04-21 04:08:02       9 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-21 04:08:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-21 04:08:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-21 04:08:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-21 04:08:02       18 阅读

热门阅读

  1. SpringBoot Jar包在CentOS7.x上注册成服务并开机启动

    2024-04-21 04:08:02       13 阅读
  2. Python 一个简化地址解析的利器 addressrec

    2024-04-21 04:08:02       14 阅读
  3. js DOM模型常用方法复盘梳理

    2024-04-21 04:08:02       15 阅读
  4. 信号塔(树形dp)

    2024-04-21 04:08:02       9 阅读
  5. Ocr识别

    2024-04-21 04:08:02       12 阅读
  6. 音视频、网络带宽等常用概念详解

    2024-04-21 04:08:02       13 阅读
  7. pytorch中模型训练的学习率动态调整

    2024-04-21 04:08:02       11 阅读
  8. web应用使用spring

    2024-04-21 04:08:02       16 阅读
  9. 2024.4.20力扣每日一题——组合总和

    2024-04-21 04:08:02       11 阅读
  10. 游戏中的伤害类型

    2024-04-21 04:08:02       11 阅读
  11. 正则表达式大全,30个正则表达式详细案例

    2024-04-21 04:08:02       17 阅读
  12. 上海计算机学会2023年12月月赛C++丙组T2移动复位

    2024-04-21 04:08:02       13 阅读
  13. 搭建vue3组件库(一):Monorepo项目搭建

    2024-04-21 04:08:02       16 阅读