等边三角形
来源:互联网 发布:nodejs express 数据库 编辑:程序博客网 时间:2024/04/30 12:35
蒜头君手上有一些小木棍,它们长短不一,蒜头君想用这些木棍拼出一个等边三角形,并且每根木棍都要用到。 例如,蒜头君手上有长度为 1,2,3,3 的4根木棍,他可以让长度为1,2 的木棍组成一条边,另外 2 跟分别组成 2 条边,拼成一个边长为 3 的等边三角形。蒜头君希望你提前告诉他能不能拼出来,免得白费功夫。
输入格式
首先输入一个整数 n(3≤n≤20),表示木棍数量,接下来输入 n 根木棍的长度 pi(1≤pi≤10000)。
输出格式
如果蒜头君能拼出等边三角形,输出"yes"
,否则输出"no"
。
样例输入1
51 2 3 4 5
样例输出1
yes
样例输入2
41 1 1 1
样例输出2
no
import java.util.Scanner;public class Main {static int flag=0,n,sum;static int[] p = new int[22];static void dfs(int a,int b,int c,int i){if(a>sum/3 || b>sum/3 || c>sum/3 || i>n+1)return;//注意边界 因为p[n]是从1开始 所以最后的条件是i=n+1 不是i==nif(a==b && b==c && i==n+1){flag=1;return;}dfs(a+p[i],b,c,i+1);dfs(a,b+p[i],c,i+1);dfs(a,b,c+p[i],i+1);}public static void main(String[] args) {Scanner sc = new Scanner(System.in);n = sc.nextInt();int max=0,a=0,b=0,c=0;for(int i=1;i<=n;i++){p[i]=sc.nextInt();sum+=p[i];max =Math.max(max, p[i]);}if(sum%3!=0 || max>sum/3){System.out.println("no");System.exit(0);}dfs(0,0,0,1);if(flag==0)System.out.println("no");elseSystem.out.println("yes");}}
0 0
- 等边三角形
- 实心等边三角形
- 输出等边三角形
- 计蒜客|等边三角形
- 打印等边三角形
- 使用*号,打印等边三角形
- 用字母画等边三角形
- android画等边三角形
- 物理题 三个芭蕾舞演员 等边三角形
- 安卓等边三角形
- 等边三角形(dfs剪枝)
- python 画等边三角形
- 【Python】2.3绘制等边三角形
- 打印楼梯\笑脸等边三角形
- Java之等边三角形
- 叠加等边三角形的绘制
- 打印*等边三角形和累加运算
- C语言:用*打印等边三角形
- 日本杀人案件!
- 通过考试(京东2017实习生真题)
- Android编程权威指南之Activity的抽象类使用
- 逻辑回归原理(python代码实现)
- Android Canvas和Paint用法
- 等边三角形
- CodeForces
- Python 运算符
- geoserver环境搭建
- QString 类的用法(1)
- C# ListView用法
- 编译时常量和编译时变量
- elasticsearch之删除索引
- 八皇后