`
digiter
  • 浏览: 120515 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

pku1011 Sticks

    博客分类:
  • ICPC
阅读更多
一直没想好怎么搜索,所以一直没写,最近看到一段细节写得非常好的代码,于是把这道题AC了,感觉这段搜索写得灰常强大,短而效率高
#include <cstdio>
#include <algorithm>
#include <functional>
using namespace std;

const int maxN = 64 + 5;
int n, stick[maxN], len, m;
bool used[maxN] = {false}, done;

void dfs(int k, int now, int cnt)
{
	if (cnt == m)
		done = true;
	else if (now == len)
		dfs(0, 0, cnt + 1);
	else {
		int pre = -1;
		for (int i = k; i < n; ++i)
			if (!used[i] && stick[i] != pre && now + stick[i] <= len)
			{
				used[i] = true;
				pre = stick[i];
				dfs(k + 1, now + stick[i], cnt);
				used[i] = false;
				if (k == 0 || done)
					return;
			}
	}
}

int main()
{
	while (scanf("%d", &n), n > 0)
	{
		int sum = 0;
		for (int i = 0; i < n; ++i)
		{
			scanf("%d", &stick[i]);
			sum += stick[i];
		}
		sort(stick, stick + n, greater<int>());
		done = false;
		for (len = stick[0]; len <= sum; ++len)
			if (sum % len == 0)
			{
				m = sum / len;
				dfs(0, 0, 0);
				if (done)
					break;
			}
		printf("%d\n", len);
	}
	return 0;
}


原代码的地址是
http://www.cnblogs.com/lotus3x/archive/2008/07/25/1251552.html
分享到:
评论

相关推荐

    深度优先遍历 搜索算法 ACM PKU 1011 S.doc

    深度优先遍历 搜索算法 ACM PKU 1011 S.doc

    POJ1011-Sticks

    【标题】"POJ1011 - Sticks" 是一个经典的计算机编程竞赛题目,源自北京大学的在线评测系统POJ(PKU Online Judge)。这个题目挑战程序员解决与几何图形和数学逻辑相关的问题。 【描述】该题目的核心是求解在二维...

    pku acm第1011的代码

    这是我写第1011的代码 这是我写第1011的代码 这是我写第1011的代码 这是我写第1011的代码 这是我写第1011的代码

    pku.zip_PKU

    【标题】"pku.zip_PKU" 指的是一份与北京大学(Peking University, PKU)相关的压缩文件。从描述来看,这份压缩包包含了部分编程题目的代码,可能是学生或者爱好者在解决北京大学编程竞赛或课程作业时编写的。"pku"这...

    pku acm 1011

    根据给定的信息,本文将对“pku acm 1011”这一问题进行详细的解析,包括其背景、算法思路、代码实现等关键知识点。 ### 一、问题背景 题目“pku acm 1011”来源于北京大学(Peking University)举办的ACM程序设计...

    pku经典题目解题报告

    "pku经典题目解题报告"这一标题揭示了文件内容的核心,它表明这是一份关于北京大学(PKU)编程竞赛或算法竞赛中的经典问题的解答集。通常,这样的报告会涵盖一系列在PKU历年比赛中出现的难题,包含了解题思路、算法...

    pku1000程序 解题报告

    pku1000 pku1000程序 解题报告

    PKU-ACM.rar_PKU_acm 题目

    在编程竞赛的世界里,北京大学(PKU)的ACM团队以其高质量的题目和独特的解题思路闻名。"PKU-ACM.rar"这个压缩包包含了北大ACM题目的一些核心知识点,旨在帮助参赛者理解和掌握算法竞赛中的生命周期题目解法。本文将...

    用于人体动作识别的PKU-MMD大范围数据集

    benchmark (PKU-MMD) for continuous multi-modality 3D human action understanding and cover a wide range of complex human activities with well annotated information. PKU-MMD contains 1076 long video ...

    PKU 课 件 ppt 等 灰常强大

    【标题】"PKU 课件 ppt 等 灰常强大" 指的是北京大学(PKU)的课程资料,其中包括了PPT演示文稿和其他相关文档资源,这些资料质量高、内容丰富,对学习者来说具有极高的价值。"灰常强大"这一网络用语表明这些课件...

    ACM代码 之pku代码

    【标题】"ACM代码 之pku代码" 涉及的是在计算机科学领域中的算法竞赛编程,尤其是北京大学(Peking University, PKU)的ACM/ICPC(国际大学生程序设计竞赛)训练代码。这些代码是参赛者或教练为了准备这类竞赛而编写的,...

    pku acm 一些代码

    标题 "pku acm 一些代码" 暗示了这是一个与北京大学(Peking University, 简称PKU)的ACM(国际大学生程序设计竞赛)相关的代码集合。在这个领域,参赛者通常需要解决算法问题,编写高效且优化的代码来求解数学、逻辑...

    pku1664

    标题"Pku1664"很可能是指北京大学(Peking University)在某个编程竞赛或课程中的一道题目或项目,编号为1664。这道题目可能涉及到计算机科学的基础概念,尤其是算法和数据结构。描述中提到的是"Pku1664源代码",暗示...

    8数码代码pku1077

    8数码代码pku1077,300ms(哈希+广度搜索)

    pku1742.rar_pku 17_pku 1742 _报告及程序

    标题中的“pku1742.rar_pku 17_pku 1742 _报告及程序”表明这是一个与北京大学(Peking University, 简称PKU)相关的项目,项目编号可能是1742,内容包括了结题报告和程序代码。这个压缩包很可能是学生或研究人员提交...

    ACM.rar_PKU_acm pku_pku 1709 crossword_pku acm_visual c

    标签部分进一步细化了内容:"pku acm_pku"再次强调这是北京大学ACM竞赛的资料,"pku__1709__crossword"可能是特定的题目标签,而"pku_acm"可能是北京大学ACM团队的标识。"visual_c"可能表示这些代码是使用C++语言,...

    acm_pku_code.zip_Code p_acm pku_acm pku pu_acm.pku_pku acm

    "p_acm"、"pku_acm"以及"pu_acm.pku_pku"等标签可能是用于分类或标识这些代码属于北京大学(Peking University, PKU)的ACM训练题目。"acm"一词重复出现,进一步强调了这是关于ACM编程竞赛的内容。 描述中提到"acmer...

    pku1088.rar_pku 10_pku 1088_poj 1088

    标题中的“pku1088.rar_pku 10_pku 1088_poj 1088”指的是北京大学(Peking University, PKU)编程竞赛中的第1088题,也称为POJ(Peking University Online Judge)的1088题。这个题目在编程竞赛社区中通常有一个特定的...

    PKU 2339 Rock, Scissors, Paper

    PKU 2339 Rock, Scissors, Paper 源代码

    PKU POJ 1162 Building with Blocks解题报告

    与同类题目比较,如线性情况的1011 Sticks、二维情况的1020 Anniversary Cake以及需要坐标变换的1069 The Bermuda Triangle等,本题作为三维情况,其复杂度达到了顶峰。 #### 解题思路 解题的关键在于良好的搜索...

Global site tag (gtag.js) - Google Analytics