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

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

输入: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]);

猜你喜欢

转载自blog.csdn.net/m0_52043808/article/details/123910521