HDU_1455_dfs
http://acm.hdu.edu.cn/showproblem.php?pid=1455
int dfs(int all,int sum,int now),all代表剩余总长,sum,代表每段长,now代表当前拼接的长度。
if(a[i]+now == sum || now == 0) return 0;
while(a[i+1] == a[i]) i++;
这两句话剪枝很重要。
#include<iostream>
#include<string>
#include<cstring>
#include<algorithm>
using namespace std; int a[],used[],n; bool cmp(int a,int b)
{
return a>b;
} int dfs(int all,int sum,int now)
{
if(all == && now == sum) return ;
if(now == sum) now = ;
for(int i = ;i <= n;i++)
{
if(used[i] || a[i]+now > sum) continue;
used[i] = ;
if(dfs(all-a[i],sum,now+a[i])) return ;
used[i] = ;
if(a[i]+now == sum || now == ) return ;
while(a[i+] == a[i]) i++;
}
return ;
}
int main()
{
while(cin >> n && n)
{
int sum = ;
for(int i = ;i <= n;i++)
{
cin >> a[i];
sum += a[i];
}
sort(a+,a+n+,cmp);
for(int i = a[];i <= sum;i++)
{
if(sum%i) continue;
memset(used,,sizeof(used));
if(dfs(sum,i,))
{
cout << i << endl;
break;
}
}
}
return ;
}
HDU_1455_dfs的更多相关文章
随机推荐
- 小小知识点(十四)——Adobe photoshop cc 2018中简单抠图的一些基本操作
一 如何抠图 1. 右键弹出选择工具,随后鼠标左键选择快速选择工具 2.通过点击鼠标,选择想要的区域: Alt+鼠标右键 左右拖动鼠标可调整画笔大小 Alt+鼠标滑轮,可放大或缩小画布大小 ctrl ...
- java基础之----非空判断
大家好,第一次写博客,一直想写博客,用于自我总结,也用于帮助新同学成长. 平常我们开发的时候,用到很多非空判断,但是很多同学用到的地方不是很准确,这里,我把自己平时遇到的坑跟大家说说.我废话不多,只想 ...
- 2019年面试官最喜欢问的28道ZooKeeper面试题
前言 ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务.它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护.域名服务.分布式同步.组服务等. ZooKeeper 的 ...
- 1、Vue 实战-入门篇
先决条件:需要 Node.js . npm 基础. 如果没有基础看先看下面简单的两点介绍. 1.npm 命令介绍. 1.所有命令 -h 可以查看.也可以从官网查 docs,结果如下. --help ...
- Spring Boot2 系列教程 (三) | 使用 LomBok 提高开发效率
微信公众号:一个优秀的废人 如有问题或建议,请后台留言,我会尽力解决你的问题. 前言 上周去了开年会,去的地方是温泉度假村.老实说,我是无感的,90% 是因为没中奖(老板太抠,两百人只抽三个奖),10 ...
- 容器环境的JVM内存设置最佳实践
Docker和K8S的兴起,很多服务已经运行在容器环境,对于java程序,JVM设置是一个重要的环节.这里总结下我们项目里的最佳实践. Java Heap基础知识 默认情况下,jvm自动分配的heap ...
- Redis常用命令详细介绍
一.字符串 字符串键是Redis最基本的键值对类型,将一个单独的键和一个单独的值关联起来.通过字符串键,不仅可以存储和读取字符串,如果输入能被解释为整数和浮点数,还能执行自增或自减操作. 1.SET: ...
- python 面向对象-初识
一.分类 1.面向过程 2.面向函数 3.面向对象 二.类和对象 1.宏关 类是抽象的,对象是具体的 2.实例化 类->对象 3.类的作用 1)实例化成对象 实例化的过程,创建self对象,调用 ...
- 轻松理解 Kubernetes 的核心概念
Kubernetes 迅速成为云环境中软件部署和管理的新标准. 与强大的功能相对应的是陡峭的学习曲线. 本文将提供 Kubernetes 的简化视图,从高处观察其中的重要组件,以及他们的关联. 硬件 ...
- java集合与数组之间转换
数组转换为集合 采用java中集合自带的asList()方法就可以完成转换了 String[] array = new String[] {"zhu", "wen&quo ...