代码编织梦想

在这里插入图片描述

import java.util.*;

public class Main{
	
    public static void main(String[] args) { 
    	Scanner sc = new Scanner(System.in);
    	
    	int n = sc.nextInt();
    	int[] gun = new int[61];
    	int max = 0;//最长的小木棍长度
    	int sum = 0;//木棍总长度
    	for (int i = 1; i <= n; i++) {
			int len = sc.nextInt();
			max = Math.max(len, max);
			gun[len]++;
			sum += len;
		}
    	
    	int ans = sum;
    	for (int len = max; len < sum/2; len++) {
			if (sum % len == 0) {
				if (dfs(gun, sum, len, sum/len, 0, 0, max, max) == true) {
					ans = len;
					break;
				}
			}
		}
    	System.out.println(ans);
    }

    /***
     * 
     * @param g 存放各个长度木棍的数量
     * @param sum 完整木棍的长度
     * @param len 本次尝试的木棍长度
     * @param num 本次每根小木棍的长度
     * @param k 本次进行到第几次完整木棍的拼装
     * @param single 完整木棍目前的拼装长度
     * @param last 上一次拼装使用的最大小木棍
     * @param max 小木棍的最大长度限制 
     * @return
     */
	private static boolean dfs(int[] g, int sum, int len, int num, int k, int single, int last, int max) {
		if (single == len) {
			single = 0;
			last = max;
			k++;
			if (k == num) return true;
		}
		
		for (int i = last; i >= 1; i--) {
			if (g[i] >= 1 && single + i <= len) {
				g[i]--;
				if(dfs(g, sum, len, num, k, single + i, i, max)) return true;
				g[i]++;
				if (single == 0 || single + i == len) {//当数组元素不够时
					break;
				}
			}
		}
		
		return false;
	}
    
}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_55026151/article/details/128859817

【题解】小木棍-爱代码爱编程

题目来源:loj 题目描述 乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过50。现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它们的长度。给出每段小木棍的长度,编程帮他找出原始木棍的最小可能长度。 输入 第一行为一个单独的整数N表示砍过以后的小木棍的总数,其中N≤60,第二行为N个用空个隔开的正整

深搜剪枝——小木棍-爱代码爱编程

题目描述: 乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过50 。现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它们的长度。给出每段小木棍的长度,编程帮他找出原始木棍的最小可能长度。 输入格式 第一行为一个单独的整数 N表示砍过以后的小木棍的总数。 第二行为 N个用空格隔开的正整数,表示 N 根小木棍

洛谷 小木棍-爱代码爱编程

oj小木棍问题 Description 乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过50 。 现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它们的长度。 给出每段小木棍的长度,编程帮他找出原始木棍的最小可能长度。 Input 第一行为一个单独的整数 N表示砍过以后的小木棍的总数。 第二行为 N个

1442 小木棍-爱代码爱编程

【题目描述】 乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过50。现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它们的长度。给出每段小木棍的长度,编程帮他找出原始木棍的最小可能长度。 【输入】 第一行为一个单独的整数N表示砍过以后的小木棍的总数,其中N≤60,第二行为N个用空个隔开的正整数,表示N根

P1120 小木棍-爱代码爱编程

题面:乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过 50。现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它们的长度。给出每段小木棍的长度,编程帮他找出原始木棍的最小可能长度。 解析 1、回溯处理,及时return 2、优化搜索顺序,先枚举大木棍,再枚举小木棍 3.找出最大值,最小值,可行值 4.对于a

小木棍题解-爱代码爱编程

题目描述 乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过50。现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它们的长度。给出每段小木棍的长度,编程帮他找出原始木棍的最小可能长度。 输入描述: 第一行为一个单独的整数N表示砍过以后的小木棍的总数。第二行为N个用空格隔开的正整数,表示N根小木棍的长度

小木棍——搜索的剪枝优化_敲键盘的大鲨鱼!的博客-爱代码爱编程

洛谷传送门 题目描述 乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过 50 50 50。 现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它们

p1120 小木棍题解_hejx0412的博客-爱代码爱编程

这题难度很唬人呀!!! 题目描述 乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过 50

持续集成:使用jenkins api创建视图-爱代码爱编程

目录 1. 获取视图配置文件2. 创建视图3. 将job添加到视图 1. 获取视图配置文件 jenkins API创建视图(view)和创建项目类似,通过一个视图配置文件,发送post请求来创建。 视图配置文件可通过如下步骤获取: 手动在jenkins创建一个视图,例如我创建一个名为myview的视图。 访问http://192.16

spring integration开篇:说明-爱代码爱编程

系列文章目录 …TODO spring integration开篇:说明 …TODO spring integration使用:消息路由 spring integration开篇:说明 系列文章目录前言ent

2023年深圳java培训机构排名,不看后悔系列!-爱代码爱编程

不忘初心,方得始终。2023,继续战斗!想要学习Java的小伙伴们看过来~深圳Java培训机构排名最新排行榜来了!靠谱的Java培训机构都在这里,总有一个你喜欢的,总能选出一个合适你的,快拿出小本本记下这条保命信息。 一、深圳动力节点 动力节点之所以在榜首,是因为动力节点是专门教Java的培训机构。自成

intellij idea 闪退的解决办法-爱代码爱编程

场景 最近这idea闪退频率又多了不少 以前 几天一闪退 现在 一天N多次闪退 如下图 看这崩溃日志 这怎么顶 解决办法 查看崩溃日志 日志 1 日志2 日志3 可以看出现在生效的参数 Command Lin

高级spring之jdk 动态代理进阶-爱代码爱编程

演示1 - 模拟 jdk 动态代理 public class A12 { interface Foo { void foo(); int bar(); } static class Target implements Foo { public void foo() {

redis主从架构 | 黑马redis高级篇-爱代码爱编程

目录 一、搭建主从架构 1、为什么要搭建 2、准备实例和配置 3、启动 4、开启主从关系 二、 数据同步原理 1、全量同步 2、命令传播 3、增量同步 三、常见面试题 一、搭建主从架构 1、为什么要搭建 如果服务器发生了宕机,由于数据恢复是需要点时间,那么这个期间是无法服务新的请求的 如果这台服务器的硬盘出现了故障,可能数据就

题目:小木棍_乔治有一些同样-爱代码爱编程

题目描述 乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过 5050。 现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它们的长度。 给出每段小木棍的长度,编程帮他找出原始木棍的最小可能长度。 输入格式 第一行是一个整数 nn,表示小木棍的个数。 第二行有 nn 个整数,表示各个木棍的长度 a_ia

spring 中 mybaits 的一级缓存失效_mybatis 一级缓存失效-爱代码爱编程

mybatis 的一级缓存 简单回顾下mybatis的一级缓存 本质上是一个基于map实现的内存级别的缓存,默认开启,生命周期是 sqlsession 级别的 为什么会失效 其实这个问题反向分析一下就会有思路了,一级缓存默

图文详解 java 泛型,写得太好了!-爱代码爱编程

一、泛型的引入 我们都知道,继承是面向对象的三大特性之一,比如在我们向集合中添加元素的过程中add()方法里填入的是Object类,而Object又是所有类的父类,这就产生了一个问题——添加的类型无法做到统一 由此就可能产生在遍历集合取出元素时类型不统一而报错问题。 例如:我向一个ArrayList集合中添加Person类的对象,但是不小心手