【深度优先搜索】计蒜客:等边三角形

该博客探讨了一种利用深度优先搜索(DFS)算法来检查给定的一组数是否能组成等边三角形的问题。通过递归地尝试将每个数分配给三角形的三条边,并在每一步中确保不违反等边三角形的条件,即所有边长都相等且不超过总和的三分之一。当所有数都被分配且满足条件时,返回'yes',否则返回'no'。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

判断一组数能否组成等边三角形

输入:n个数

输出:yes/no

假设三条边分为为a,b,c。要做n次选择,每个数可以有三种选择,可以放在a上,b上,或者c上。需要设置3个参数记录这些状态。

dfs(index,x,y,z):做了index次选择,且当前边a,b,c的长度为x,y,z

if(index==n) return false;
//已经做了n次选择
if(x>sum/3||y>sum/3||z>sum/3)return false;
//有一条边大于sum/3
if(index==n&&x==y&&y==z&&z==sum/3)return true;
//已经做了n次选择当前是等边三角形

return dfs(index+1,x+n[index],y,z)||
dfs(index+1,x,y+n[index],z)||dfs(index+1,x,y,z+n[index]);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值