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

有重复数的组合

阅读更多
package com.viking.divide;

public class DuplicateCombination {
	public static void main(String[] args) {

		int[] a = { 1, 2, 3 ,3};
		System.out.println(perm(a, 0));
	}

	public static int perm(int[] a, int begin) {

		int count = 0;
		boolean isorder = true;
		String path = "";
		for (int i = 0; i < begin - 1; i++) {
			if (a[i] > a[i + 1]) {
				isorder = false;
				break;
			}
			path += a[i] + " ";
		}
		if (isorder && begin > 0) {
			System.out.println(path + a[begin - 1]);
			count = 1;
		}
		if (begin == a.length) {
			return count;
		}

		for (int i = begin; i < a.length; i++) {
			if(isSwap(a,begin,i)){
				swap(a, begin, i);
				count += perm(a, begin + 1);
				swap(a, begin, i);
			}			
		}
		return count;
	}

	public static void swap(int[] a, int begin, int end) {
		int temp = a[begin];
		a[begin] = a[end];
		a[end] = temp;
	}
	
	public static boolean isSwap(int[] a,int begin,int end){		
		for(int i=end;i>begin;i--){
			if(a[end]==a[i-1]){
				return false;
			}
		}
		return true;	
	}
}

分享到:
评论

相关推荐

    C#生成2位或N位不重复字母数字组合

    在C#编程中,生成不重复的字母数字组合是一项常见的任务,特别是在密码生成、验证码创建或者唯一标识符的生产场景中。本篇文章将详细讲解如何使用C#来生成指定长度的不重复字母数字组合,包括两位及任意N位的情况。 ...

    易语言组合6位不重复数字

    总的来说,"易语言组合6位不重复数字"的实现涉及了组合数学、递归/循环算法、条件判断以及基本的数值运算,是编程实践中常见的问题解决示例,对于学习编程逻辑和算法设计非常有价值。如果你想要深入学习,可以尝试...

    C#生成不重复字母数字组合的随机数

    在C#编程中,生成不重复的字母数字组合是一个常见的需求,这可能涉及到密码生成、唯一标识符创建或数据加密等多个领域。在这种情况下,我们通常会利用C#的内置类和方法来实现这一功能。标题提到的是“C#生成不重复...

    易语言组合6位不重复数字源码

    至于动态规划,虽然在这个问题上不如前两种方法直观,但也可以通过构建一个状态数组来存储已生成的组合,避免重复生成。不过,对于较小规模如6位的数字组合,回溯法和DFS通常是更高效的选择。 易语言作为编程工具,...

    C语言重复数全排列的代码

    输入一个字符串,字符串由字母、数字组成,可能包含重复的字符。生成这些字符的不重复的全排列,并将结果打印到标准输出上。 【输入形式】 从标准输入上读入一个由字母、数字组成的字符串,字符串的长度小于...

    计算数字排列组合,任意数字的组合。

    = 6种(即123, 132, 213, 231, 312, 321),而组合有3种({1, 2}, {1, 3}, {2, 3})。 1. **排列的计算**:排列的总数可以用阶乘表示,n! 表示从n个不同元素中取出r个进行排列的总数。公式为P(n, r) = n! / (n-r)!...

    C#输出不重复数字源码

    在这个解决方案中,"可定义输出个数"意味着用户可以设置要生成的不重复数字组合的数量。这可以通过在递归函数外部维护一个计数器来实现,每当输出一个组合时,计数器加1,当达到预设数量时,停止递归。 在给出的`...

    java有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

    - 组合数量:由于是三位数,所以每个位置都有四个数字可供选择(1、2、3、4),但由于不能重复,因此实际上对于每个位置的选择会逐渐减少。 - 组合合法性:每个数字在每个三位数中只能出现一次。 #### 2. 编程实现 ...

    java m取n 重复 不重复 排列组合 for循环嵌套递归

    System.out.println(chs.length + "取" + n + "不重复的排列组合个数为" + total); } ``` ##### 3.2 重复排列组合 ```java // 重复排列组合 public static int loop(int start, int end, char[] chs, String msg, ...

    易语言源码易语言数字组合源码例程.rar

    在数学中,组合是不考虑顺序的、从n个不同元素中取出m(m≤n)个元素的方法数。在编程领域,这通常涉及到算法设计,例如生成所有可能的数字组合,如密码生成、抽奖系统或数学游戏等。易语言提供了丰富的函数和结构,...

    输出n个数字的全排列(可重复)

    3、输入n个数(有重复),求n个数字的全排列 如:n=3 全排列的数字为1 1 2 则输出 112 121 211 4、输入n和k(n》=k) 求n个数字的(n,k)排列 如:n=3 k=2 排列的数字为1 1 2 则输出 11 12 21

    有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数.docx

    标题中的问题旨在探究如何使用1、2、3、4这四个数字来组成没有重复数字的三位数,并且描述中提供了算法思路,即通过三个嵌套的for循环配合一个if语句来实现。在这个Java程序中,`EleventhNumberRange` 类用于解决这...

    没有重复出现的数字的数字符号串的全体

    在编译原理中,正规式是一...通过这种方式,我们可以构造出一套规则来描述这类字符串,并通过正规式的操作和组合来生成任意长度的无重复数字的字符串正规式。这对于编译器设计和文本处理算法具有重要的理论和实践价值。

    重复数字统计器 .e文件

    使用ES配合“重复数字统计器.e”有以下几个优点: 1. **分布式存储**:ES具有强大的横向扩展能力,能轻松处理PB级别的数据。 2. **实时分析**:ES的实时索引和搜索功能,使得用户可以在数据输入的同时获得统计结果。...

    有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

    有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?字数不够,字数不够,字数不够,字数不够,字数不够,字数不够

    易语言取元素组合数

    学习易语言的取元素组合数源码有助于理解组合数的计算方法,对于学习算法和数据结构来说非常有益。同时,它还可以帮助开发者提升在实际编程问题中的解决能力,例如在处理排列组合问题、概率计算以及组合优化等场景中...

    易语言数字排列组合学习源码

    在本资源中,我们关注的是"易语言数字排列组合学习源码",这是一个使用易语言实现的程序,用于计算并展示1到5所有可能的排列组合。这对于我们理解排列组合的概念以及易语言的编程技巧提供了很好的学习材料。 排列是...

    python 有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?(源码)

    # 题目:有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少? # 分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。

    易语言源码易语言组合6位不重复数字源码.rar

    易语言源码易语言组合6位不重复数字源码.rar 易语言源码易语言组合6位不重复数字源码.rar 易语言源码易语言组合6位不重复数字源码.rar 易语言源码易语言组合6位不重复数字源码.rar 易语言源码易语言组合6位不...

    题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

    - 这个问题的解决方案的时间复杂度是O(3^n),因为有3个位置,每个位置有4种选择,所以总共有4的3次方种组合。空间复杂度是O(1),因为只需要常数级别的变量空间。 8. **软件工程基础**: - 这个问题的解决方案体现...

Global site tag (gtag.js) - Google Analytics