给定一组数字,求其中任意K个数的组合并将各种组合存储返回
来自一道1100分的topcoder习题,该死的递归快把人搞死了,从网上查到了解决方案但还是理解的不很透彻,最大问题是返回的String值不能对原数据进行区分,尝试用ArrayList也不行,现在脑子一团糟,在博客上记录一下,以后有更好的方法再过来改
如果路过的高手有什么好的建议,敬请指教
public class Polygons2 { static ArrayList co_term = new ArrayList(); static int count = 0; public static void number(int[] segmention, int K) { long result = 0; int N = segmention.length; //cacu the number of ways of combination int co_n = 1; for (int i = N; i > K; i--) { co_n *= i; } String temp = ""; combin(segmention, K, temp, 0); String[] combin_result = (String[]) co_term.toArray(new String[co_term.size()]); // combin_result=combin_result.substring(1,co_term.size()-1); for (String com : combin_result) { System.out.println(com); } } public static void combin(int[] original, int k, String temp, int start) { if (k == 0) { co_term.add(temp); //co_term.add(","); } else { for (int i = start; i < original.length; i++) { temp += (String.valueOf(original[i])); //co_term.add(" "); combin(original, k - 1, temp, i + 1); //co_term.remove(temp.substring(temp.length())); temp = temp.substring(0, temp.length() - 1); } } } // public static void combin(int[] original, int k, int start) { // ArrayList temp = new ArrayList(); // if (k == 0) { // co_term.add(temp); // co_term.add(","); // } else { // for (int i = start; i < original.length; i++) { // temp.add(original[i]); // co_term.add(String.valueOf(original[i]) + " "); // combin(original, k - 1, temp, i + 1); // temp.remove(temp.size()); // //co_term.remove(co_term.size()-1); // } // } // } public static void main(String[] args) { int[] segmention = {10, 1, 4, 9, 20}; int K = 4; number(segmention, K); } }
您还没有登录,请您登录后再发表评论
找出一M行数中任取N行后,找出这N行中含有的相同数字. 数据源文件本程序采用文本文件,每行...得用信号量实现线程控制 说明,本程序只完成了找出各种组合,及找出每种组合中含有的相同的数字 保存结果部分未完成,
例如,输入信号未正确传递,导致输出不符合预期;或者电路设计有误,使某些逻辑门无法正常工作。 时序逻辑电路则包含存储元件,如触发器,能记住之前的状态。在时序电路实验中,故障可能表现为时钟同步问题、状态机...
3. 对于未处理数组中的每个元素,将其添加到当前组合,然后递归处理下一个元素和更新后的未处理数组列表。 4. 在递归结束后,移除当前添加的元素,回溯到上一步。 以下是一个简化的Java代码示例: ```java import ...
这个项目旨在让学生们深入理解和应用数字逻辑、组合逻辑和时序逻辑等基础知识。在本案例中,使用了ALTERA软件,这是一个广泛用于 FPGA(Field Programmable Gate Array,现场可编程门阵列)设计的强大工具。ALTERA...
在实验过程中,不仅需要理解每个器件的单独功能,还要学会如何将它们组合起来,完成更复杂的逻辑功能。这有助于提升对组合逻辑电路设计和分析的能力,为将来在数字系统设计、微控制器应用等领域打下坚实基础。
- `showPhone()`方法遍历经过水平和垂直投影处理后的数据,通过模式匹配的方式识别出各个数字,并最终将识别结果组合成一个完整的数字串。 ### 示例代码分析 虽然给出的部分代码中存在乱码和不完整的地方,但可以...
在完成这些设计时,学生需要深入理解数字逻辑门、组合逻辑电路、时序逻辑电路、计数器、寄存器、译码器、编码器等基本概念,同时结合微处理器或微控制器可能的应用,以实现复杂的逻辑控制和实时反馈。这些题目提供了...
由于题目中并未给出具体的习题内容,这里无法给出详细的解答示例。但在《数字电路与系统》这本教材中,通常会包含大量与上述知识点相关的习题,帮助读者巩固所学知识。例如: - 设计一个简单的组合逻辑电路,实现...
1. **数字锁概念**:数字锁是一种安全设备,通过设定特定的数字组合来实现锁定和解锁功能。在模拟设计中,我们将用计算机程序来实现这一逻辑,可能包括数字输入验证、密码匹配和错误尝试限制等。 2. **微处理器原理...
首先,我们来看“与或非门(未完成).ms14”。这是一个可能代表某种模拟或数字设计文件,比如电路图或者仿真模型。与门、或门和非门是数字逻辑门的基本类型,它们构成了所有数字电路的基础。与门只有当所有输入都为...
一个晶圆上的所有die在制造完成后必须进行测试,这个过程称为晶圆探测(Wafer Probing)或电路探测(Circuit Probing)。测试的目的是确保每个die都能满足预定的电压、电流、时序和功能要求。如果测试未通过,该die...
- 本书的独特之处在于其从计算机体系结构的角度出发介绍数字逻辑设计,从最基本的1和0开始,逐步引导学生完成MIPS微处理器的设计。 - **本书特点:** - 综合性:不仅涵盖数字设计的基本原理,还深入探讨了计算机...
若密码错误或超过30秒未完成输入,系统启动报警。 3. **倒计时功能**:555定时器与74LS160计数器共同作用,实现30秒倒计时。 #### 六、总结 本文介绍了基于Proteus仿真的数字密码锁电路的设计与实现方法。通过详细...
这些题目旨在帮助学习者巩固对数字系统、逻辑门、布尔代数、二进制转换、组合逻辑电路和时序逻辑电路的理解。 【例1】将二进制数转换成十进制数: 这个例子是关于二进制到十进制的转换,这是一个基本的计算任务,...
对于未完成的作业,教师鼓励学生清晰阐述未完成的原因,这有助于提高理解和学习效果。 在数字逻辑设计的学习中,理解基本的逻辑门电路,如与门、或门、非门,以及组合逻辑电路和时序逻辑电路的设计原理至关重要。...
实验涵盖了从基本门电路到组合逻辑和时序逻辑电路的仿真与验证。 在实验报告中,学生许树炯需要完成以下几点: 1. **熟悉EDA工具**:学习如何使用Libero软件,这是一款广泛应用于集成电路设计的电子设计自动化工具...
实现完成后,六人抢答器将具备以下特点:一是公平性,由于采用了数字逻辑电路,能准确无误地判断出第一个按下按钮的参赛者;二是简单易用,只需按下按钮,系统就能自动完成抢答判断;三是可扩展性,虽然本设计针对...
**数字电子技术试题详解** ...以上是对数字电子技术试题的详细解答,涵盖了数字逻辑的基础概念,如数制转换、逻辑门、触发器、存储器、D/A转换器、时序逻辑电路、组合逻辑电路以及逻辑函数化简等内容。
MD5数字签名算法是信息安全领域中的一个重要概念,...提供的"报告_MD5数字签名算法.doc"和"任务书_MD5数字签名算法.doc"应包含项目介绍、任务要求、步骤指导以及可能遇到的问题和解决方案,帮助学生顺利完成课程设计。
- 射击8枪,命中4枪,4枪连在一起的不同种数,可以看成是4个命中和4个未命中的排列,有C(8,4)种选择,然后将连续的4枪看成一个元素,与其他4个元素排列,共有A(5,5)种排列,所以共有C(8,4) * A(5,5)种情况。...
相关推荐
找出一M行数中任取N行后,找出这N行中含有的相同数字. 数据源文件本程序采用文本文件,每行...得用信号量实现线程控制 说明,本程序只完成了找出各种组合,及找出每种组合中含有的相同的数字 保存结果部分未完成,
例如,输入信号未正确传递,导致输出不符合预期;或者电路设计有误,使某些逻辑门无法正常工作。 时序逻辑电路则包含存储元件,如触发器,能记住之前的状态。在时序电路实验中,故障可能表现为时钟同步问题、状态机...
3. 对于未处理数组中的每个元素,将其添加到当前组合,然后递归处理下一个元素和更新后的未处理数组列表。 4. 在递归结束后,移除当前添加的元素,回溯到上一步。 以下是一个简化的Java代码示例: ```java import ...
这个项目旨在让学生们深入理解和应用数字逻辑、组合逻辑和时序逻辑等基础知识。在本案例中,使用了ALTERA软件,这是一个广泛用于 FPGA(Field Programmable Gate Array,现场可编程门阵列)设计的强大工具。ALTERA...
在实验过程中,不仅需要理解每个器件的单独功能,还要学会如何将它们组合起来,完成更复杂的逻辑功能。这有助于提升对组合逻辑电路设计和分析的能力,为将来在数字系统设计、微控制器应用等领域打下坚实基础。
- `showPhone()`方法遍历经过水平和垂直投影处理后的数据,通过模式匹配的方式识别出各个数字,并最终将识别结果组合成一个完整的数字串。 ### 示例代码分析 虽然给出的部分代码中存在乱码和不完整的地方,但可以...
在完成这些设计时,学生需要深入理解数字逻辑门、组合逻辑电路、时序逻辑电路、计数器、寄存器、译码器、编码器等基本概念,同时结合微处理器或微控制器可能的应用,以实现复杂的逻辑控制和实时反馈。这些题目提供了...
由于题目中并未给出具体的习题内容,这里无法给出详细的解答示例。但在《数字电路与系统》这本教材中,通常会包含大量与上述知识点相关的习题,帮助读者巩固所学知识。例如: - 设计一个简单的组合逻辑电路,实现...
1. **数字锁概念**:数字锁是一种安全设备,通过设定特定的数字组合来实现锁定和解锁功能。在模拟设计中,我们将用计算机程序来实现这一逻辑,可能包括数字输入验证、密码匹配和错误尝试限制等。 2. **微处理器原理...
首先,我们来看“与或非门(未完成).ms14”。这是一个可能代表某种模拟或数字设计文件,比如电路图或者仿真模型。与门、或门和非门是数字逻辑门的基本类型,它们构成了所有数字电路的基础。与门只有当所有输入都为...
一个晶圆上的所有die在制造完成后必须进行测试,这个过程称为晶圆探测(Wafer Probing)或电路探测(Circuit Probing)。测试的目的是确保每个die都能满足预定的电压、电流、时序和功能要求。如果测试未通过,该die...
- 本书的独特之处在于其从计算机体系结构的角度出发介绍数字逻辑设计,从最基本的1和0开始,逐步引导学生完成MIPS微处理器的设计。 - **本书特点:** - 综合性:不仅涵盖数字设计的基本原理,还深入探讨了计算机...
若密码错误或超过30秒未完成输入,系统启动报警。 3. **倒计时功能**:555定时器与74LS160计数器共同作用,实现30秒倒计时。 #### 六、总结 本文介绍了基于Proteus仿真的数字密码锁电路的设计与实现方法。通过详细...
这些题目旨在帮助学习者巩固对数字系统、逻辑门、布尔代数、二进制转换、组合逻辑电路和时序逻辑电路的理解。 【例1】将二进制数转换成十进制数: 这个例子是关于二进制到十进制的转换,这是一个基本的计算任务,...
对于未完成的作业,教师鼓励学生清晰阐述未完成的原因,这有助于提高理解和学习效果。 在数字逻辑设计的学习中,理解基本的逻辑门电路,如与门、或门、非门,以及组合逻辑电路和时序逻辑电路的设计原理至关重要。...
实验涵盖了从基本门电路到组合逻辑和时序逻辑电路的仿真与验证。 在实验报告中,学生许树炯需要完成以下几点: 1. **熟悉EDA工具**:学习如何使用Libero软件,这是一款广泛应用于集成电路设计的电子设计自动化工具...
实现完成后,六人抢答器将具备以下特点:一是公平性,由于采用了数字逻辑电路,能准确无误地判断出第一个按下按钮的参赛者;二是简单易用,只需按下按钮,系统就能自动完成抢答判断;三是可扩展性,虽然本设计针对...
**数字电子技术试题详解** ...以上是对数字电子技术试题的详细解答,涵盖了数字逻辑的基础概念,如数制转换、逻辑门、触发器、存储器、D/A转换器、时序逻辑电路、组合逻辑电路以及逻辑函数化简等内容。
MD5数字签名算法是信息安全领域中的一个重要概念,...提供的"报告_MD5数字签名算法.doc"和"任务书_MD5数字签名算法.doc"应包含项目介绍、任务要求、步骤指导以及可能遇到的问题和解决方案,帮助学生顺利完成课程设计。
- 射击8枪,命中4枪,4枪连在一起的不同种数,可以看成是4个命中和4个未命中的排列,有C(8,4)种选择,然后将连续的4枪看成一个元素,与其他4个元素排列,共有A(5,5)种排列,所以共有C(8,4) * A(5,5)种情况。...