算法设计与分析 5.2 洪尼玛的围栏
时间:2019-12-22
本文章向大家介绍算法设计与分析 5.2 洪尼玛的围栏,主要包括算法设计与分析 5.2 洪尼玛的围栏使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
★题目描述
有n块长度不同的木板,他想用这些木板拼成一个等边三角形的围栏。
现在,给你这n块木板的长度,洪尼玛想知道他能否拼成这个围栏?
要求:n块木板都得用上。
★输入格式
第一行为一个正整数T,表示有T组测试数据。
对于每组测试数据,第一行为一个正整数n,表示木板个数;
第二行包含n个正整数,表示每块木板的长度。
★输出格式
如果能拼成围栏输出Yes,否则输出No。
★样例输入
2
4
1 2 3 4
4
1 2 3 3
★样例输出
No
Yes
★提示
对于60%的数据,1<=T<=5,3<=n<=5,每块木板长度大于等于1小于等于100。
对于100%的数据,1<=T<=5,3<=n<=10,每块木板长度大于等于1小于等于100。
★参考代码
#include<bits/stdc++.h>
using namespace std;
int T;
int n;
int side[3],RSide = 0;
int Len[11];
bool cmp(const int a, const int b){
return a>b;
}
int dfs(int step){
if(step==n){
return side[0]==RSide && side[1]==RSide && side[2]==RSide;
}
for(int i=0; i<3; ++i){
if(side[i]+Len[step]<=RSide){
side[i]+=Len[step];
if(dfs(step+1)) return 1;
side[i]-=Len[step];
}
}
return 0;
}
int fun(){
scanf("%d",&n);
int sum=0;
memset(side, 0, sizeof(side));
for(int i=0; i<n; ++i){
scanf("%d", &Len[i]);
sum += Len[i];
}
if(sum%3!=0) return 0;
RSide = sum/3;
sort(Len, Len+n);
if(Len[0]>RSide) return 0;
return dfs(0);
}
int main(){
scanf("%d",&T);
while(T--){
fun()==1 ? printf("Yes\n") : printf("No\n");
}
return 0;
}
原文地址:https://www.cnblogs.com/yejifeng/p/12080005.html
- Android基础总结(6)——内容提供器
- No.004 Median of Two Sorted Arrays
- No.001 Two Sum
- No.002 Add Two Numbers
- 【Python环境】探索 Python、机器学习和 NLTK 库
- 【机器学习】机器学习之组合算法总结
- IE 11浏览器0day漏洞(CVE-2015-2425)UAF分析
- 【Python环境】Python可视化工具综述
- 【Spark研究】Spark编程指南(Python版)
- Java细粒度锁实现的3种方式
- 教你在Java接口中定义方法
- 【Spark研究】如何用 Spark 快速开发应用?
- 高性能Java解析器实现过程详解
- Java内存模型深度解读
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Python基础之面向对象-继承
- [源码分析]ArrayList和LinkedList如何实现的?我看你还有机会!
- 使用Python实现平台自动打卡
- QT学习第4天:qt点击鼠标画一条直线(附源代码和程序)
- 跨站请求伪造——CSRF
- 13-6 编辑多个文件和保存
- 汇编基础
- php 使用AMQP扩展调用RabbitMq
- 聊聊RedisTokenVisitor
- R语言几行代码拼接pdf文件
- 一次 Redis 分布式锁事故,整个项目组被扣绩效了。。。
- 小程序访问https显示网络错误,微信打开https空白、浏览器访问正常 解决方案
- Python GUI项目实战(七)学生信息的修改、删除和保存
- Python | 使用argparse解析命令行参数
- LeetCode 98 | 判断二叉搜索树是否合法