`
zwhc
  • 浏览: 267149 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

一种变形全排列算法

阅读更多
	public static boolean next(int[] count, int[] idx){
		idx[0] = idx[0] + 1;
		
		for(int i=0; i<idx.length; i++){
			if(idx[i]>=count[i]){
				if(i==idx.length-1){
					return false;
				}
				idx[i+1] = idx[i+1] +1;
				idx[i] = 0;
			}else{
				return true;
			}
		}
		return false;
	}

	public static void genNames(){
		String[] fileds = {
				"赵钱",
				"红青紫",
				"花云天山海",
		};
		int[] counts = new int[fileds.length];
		int[] idxs = new int[fileds.length];
		for(int i=0; i<fileds.length; i++){
			counts[i] = fileds[i].length();
			idxs[i] = 0;
		}
		do {
			String name = "";
			for(int i=0; i<fileds.length; i++){
				name += fileds[i].charAt(idxs[i]);
			}
			//System.out.print(name);
			System.out.println(name);
		}while (next(counts, idxs));
		
	}

	public static void main(String[] args) {
		genNames();
	}



运行结果:
============================

赵红花
钱红花
赵青花
钱青花
赵紫花
钱紫花
赵红云
钱红云
赵青云
钱青云
赵紫云
钱紫云
赵红天
钱红天
赵青天
钱青天
赵紫天
钱紫天
赵红山
钱红山
赵青山
钱青山
赵紫山
钱紫山
赵红海
钱红海
赵青海
钱青海
赵紫海
钱紫海
0
5
分享到:
评论

相关推荐

    全排列算法解析(完整版)

    除了基本的全排列算法,本文还介绍了字典序排列算法,这是一种对排列进行排序的算法。通过将每个排列转换成一个对应的数字(中介数),并根据中介数的大小对排列进行排序,从而得到一个有序的排列序列。在C++中,...

    全排列算法部分算法需要自己优化修改

    全排列算法是计算机科学中一个基础且重要的问题,它涉及到数组或序列的所有可能的线性排列方式。在处理这个问题时,我们通常会采用递归或迭代的方式来实现。下面将详细介绍全排列算法及其优化方法。 全排列算法的...

    彻底理解全排列算法

    全排列算法: 比如字符串abc,全排列结果为abc,acb,bac,bca,cba,cab。

    全排列算法实现(java\c#\c++,各种主流语言版本)

    全排列算法是计算机科学中的一种基础算法,它用于找出给定集合的所有可能的排列组合。在本例中,我们将讨论如何使用递归方法实现全排列,以Java、C#、C++等主流编程语言为例。 全排列算法的核心思想是通过递归地...

    组合数学全排列算法

    实现了字典序法、递增进位制数法、递减进位制数法、邻位对换法四种全排列算法。全排列算法有很多种,这里只是其中的一些,可以调试运行比较一下各种算法的效率。(该代码为初级版本,注重算法的实现,在交互方面需要...

    利用中介数实现全排列算法

    利用中介数实现全排列算法,采用java实现。

    objective-c数组全排列算法

    在iOS开发中,Objective-C是一种常用的编程语言,用于构建iPhone、iPad等Apple设备的应用程序。在处理某些问题时,如生成所有可能的组合或者解决排列组合问题,全排列算法是必不可少的工具。全排列指的是从n个不同...

    四种权威全排列生成算法.docx

    本篇文章将详细介绍四种权威全排列生成算法,包括基于中介数、相邻排列特征、递增进位制数法和递减进位制数法的方法。 1. 基于中介数的全排列算法: 这种方法通常用于生成字典序排列。在`Zidian1_1`和`Zidian1_2`...

    Python字符串的全排列算法实例详解

    在本篇文章中,我们将通过一个具体的例子来详细介绍如何使用Python语言实现字符串的全排列算法,并深入探讨其中的细节。 #### 二、全排列的基本概念 全排列是指在一个集合中取出所有元素的所有不同排列方式。例如,...

    全排列算法(分治法求解法和回溯法)

    全排列算法是计算机科学中一个基础且重要的问题,主要涉及到数组或序列的所有可能排列组合的生成。本主题将深入探讨两种解决全排列问题的方法:分治法和回溯法。 一、分治法求解全排列 分治法是一种解决复杂问题的...

    全排列算法

    全排列算法是计算机科学中的一种经典算法,主要应用于解决如何生成一个有限集合的所有可能排列的问题。这个主题通常在数据结构和算法课程中被讨论,因为它与组合数学和递归编程密切相关。在给定的标题“全排列算法”...

    使用C++实现全排列算法的方法详解

    全排列算法是计算机科学中的一种经典算法,主要应用于数据处理和组合优化问题。在C++中,实现全排列可以通过多种方法来完成,其中一种常见的方式是利用递增进位制和递减进位制数的概念。本文将深入探讨这两种进位制...

    可直接运行 MATLAB生成全排列矩阵算法 程序源代码.rar

    全排列矩阵算法是一种计算一组数字所有可能排列顺序的算法,它在组合数学、数据分析以及某些计算机科学问题中具有广泛应用。MATLAB是一款强大的数值计算和数据可视化软件,常用于科研和工程领域。 描述中的内容与...

    全排列的生成算法

    全排列的生成法通常有以下几种: 1. 字典序法 字典序法中,对于数字 1、2、3......n 的排列,不同排列的先后关系是从左到右逐个比较对应的数字的先后来决定的。例如对于 5 个数字的排列 12354 和 12345,排列 ...

    深入全排列算法及其实现方法

    全排列在很多程序都有应用,是一个很常见的算法,常规的算法是一种递归的算法,这种算法的得到基于以下的分析思路。 给定一个具有n个元素的集合(n&gt;=1),要求输出这个集合中元素的所有可能的排列。一、递归实现...

    递归全排列算法

    这是一个递归完成全排列的算法,使用的是C++进行编程,希望能帮到你~

    组合数学全排列生成算法

    全排列生成算法是组合数学中的一个重要概念,它涉及到在有限集合中的所有可能的无重复排列。在计算机科学中,这种算法常用于数据处理、搜索问题、优化问题等场景。本项目提供了C语言实现的四种常见全排列生成算法,...

    JAVA用递归实现全排列算法的示例代码

    全排列算法是一种经典的算法,在数学和计算机科学领域中有着广泛的应用。该算法的主要思想是使用递归函数来生成所有可能的排列。 首先,我们需要了解什么是全排列。全排列是指将一个数组或序列中的元素重新排列,以...

Global site tag (gtag.js) - Google Analytics