`
linest
  • 浏览: 155587 次
  • 性别: Icon_minigender_1
  • 来自: 内蒙古
社区版块
存档分类
最新评论

ZOJ-1089* 组合

    博客分类:
  • acm
 
阅读更多
3年了,一直没充分利用资源,现决定勤做做,锻炼一下编程能力。
自己写的也好,参考的也罢,都是一种学习。

1089:在一串升序的数里选6个数,打印所有的选法。
生成组合问题。用1~N生成组合数,对应到读入数据的下标打印即可。
参考代码。递归方法实现。

dummy函数是对一种组合结果的处理函数。现在只是单纯打印组合结果。
根据需要改动。本题输出对应下标的结果值在其中完成。
int count=0; //用于计数
void dummy(int* a,int n){
	int i;
	cout<<count++<<": ";
	for (i=0;i<n-1;i++)
		cout<<a[i]<<' ';
	cout<<a[n-1]<<endl;
}


初始化1~N 用于组合。从n个数中选m个。pos用于确定当前处理哪一位数。
void gen_comb(int n,int m){
	int a[MAXN],temp[MAXN],pos=0,i;
	for (i=0;i<n;i++)
		a[i]=i+1;
	_gen_comb(a,0,n-1,m,pos,temp);
}


核心函数,a为待选数组,s为起始索引,e为终点索引,pos为组合处理位,temp存一组结果
temp[pos++]  pos--  形成回溯。
递归思路,先确定一个数,在剩余的数中求更小规模的组合。
void _gen_comb(int* a,int s,int e,int m,int& pos,int* temp){
	int i;
	if (!m)
		dummy(temp,pos);
	else
		for (i=s;i<=e-m+1;i++){
			temp[pos++]=a[i];
			_gen_comb(a,i+1,e,m-1,pos,temp);
			pos--;
		}
}
分享到:
评论

相关推荐

    ACM算法经典书籍----最全最详细的书籍推荐!

    - 组合分析 - 递推关系 - 概率论等 #### 六、Introduction to the Design and Analysis of Algorithms - **书名**: *Introduction to the Design and Analysis of Algorithms* - **作者**: Anany Levitin - **...

    acm新手训练方案新手必备

    组合数学主要涉及计数组合、排列组合等问题。 - **组合数**:掌握组合数的计算公式及其应用。 - **示例题目**: - POJ 3252: 组合数的应用 - POJ 1850: 组合数的高级用法 - POJ 1019: 组合数的变种问题 - POJ ...

    浙大acm最新模板!

    - **组合公式**:包括组合数的计算公式C(n, k),以及组合恒等式等。 - **排列组合生成**:实现生成所有可能的排列或组合,这对于全搜索和回溯算法非常重要。 这个模板库不仅提供了代码实现,还包含了解决相关问题...

    Acm竞赛常用算法与数据结构

    - **浙江大学微软技术俱乐部**和**ZOJ**(在线评测系统)是训练和选拔优秀选手的重要平台。 - **参考书籍**:《C++ Primer》、《C++标准程序库》、《算法导论》、《算法艺术与信息学竞赛》等是深入学习的基础资料...

    ACM 竞赛常用算法与数据结构

    - **书籍**:《C++ Primer》、《C++ Standard Library》、《算法导论》、《算法艺术与信息学竞赛》、《组合数学》和《计算几何》等。 - **在线平台**:ZOJ、Timus、SGU、USACO和Ace.Delos等,这些网站提供了丰富的...

    算法设计与分析实验指导

    - 使用递归方式穷举所有可能的选择组合。 - 记录每次选择后的总重量和总价值,并更新最大价值。 - **代码示例**: ```c void search(int m) { if (m &gt;= n) checkmax(); else { a[m] = 0; search(m + 1); a...

    如何学习ACM,看后受益匪浅

    - **离散数学**:重点在于图论和组合数学,尤其是在图论方面。图论的变化多样,可以与多种数据结构和算法相结合。 - **数论**:以素数判断和同余为核心,用于解决密码学背景下的问题。 - **计算几何**:相对独立,...

    博弈_acm_Game_theory_入门

    - **示例**: ZOJ 1024 Calendar Game - **游戏规则**: 玩家可以选择将日期向后推进一天或跳到下个月的相同日期。 - **胜利条件**: 第一个达到2001年11月4日的玩家获胜。 - **解题思路**: 分析不同日期下的状态,...

    hdu oj poj 题目代码与详解

    “zoj”指的是Zhejiang Online Judge,是另一个中国的在线编程竞赛平台,同样提供大量题目供学习者挑战。标签的组合表明这些资料可能包含了这三个平台上的解题资源。 7. **学习资源**: 这样的代码集合对于准备...

    ZOJ题解集合-截至2835

    3. **数学问题**:包括数论(如质数判断、模运算)、组合数学(排列组合、容斥原理)、图论问题、几何问题等。 4. **字符串处理**:KMP算法、Boyer-Moore算法、Rabin-Karp算法等字符串匹配方法,以及模式匹配、文本...

    zoj 1002_zoj1002_

    【标题】"ZOJ 1002" 是一个在线编程竞赛题目,源自ZOJ(Zhejiang Online Judge),这是一个面向ACM/ICPC(国际大学生程序设计竞赛)的在线评测系统。题目编号1002,通常表示该题是ZOJ平台上的一个问题,可能涉及算法...

    ZOJ月赛 题解 (ZOJ Monthly, August 2014)

    7. **数学应用**:数论、组合数学、概率论等数学知识在某些题目中起到决定性作用,如质因数分解、排列组合、概率计算等。 通过深入研究20141007(ZOJ Monthly, August 2014)这个压缩包中的解题报告和代码,我们可以...

    zoj 700源代码

    4. **数学知识**:部分题目可能需要运用到高等数学知识,如组合数学、数论、线性代数等。源代码中可能有巧妙的数学技巧来简化问题。 5. **复杂度分析**:每个解决方案通常都会伴随着时间复杂度和空间复杂度的分析,...

    zoj.zip_zoj

    【标题】"zoj.zip_zoj"所对应的资源是一个与ZOJ(Zhejiang Online Judge)相关的代码集合。ZOJ是浙江大学主办的一个在线编程竞赛平台,它提供了多种算法题目供用户练习和提交代码进行评测。这个压缩包很可能包含了在...

    ACM程序设计竞赛例题.docx

    #### 三、堡垒问题(ZOJ1002) **知识点解析:** 堡垒问题是另一个典型的组合优化问题,涉及在特定区域内放置元素(堡垒)的问题。本题中需要在4×4的网格中放置堡垒,使堡垒数量尽可能多,同时避免同一直线上...

    zoj代码集合

    【ZOJ代码集合】是一个专为ACM(国际大学生程序设计竞赛)爱好者准备的资源库,其中包含了丰富的算法实现和编程技巧。这个压缩包文件名“ZOJ入门与提高代码集”暗示了它旨在帮助初学者逐步提升编程能力,同时也为有...

Global site tag (gtag.js) - Google Analytics