`
zwhc
  • 浏览: 265999 次
  • 性别: 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。

    全排列算法 实例 一种实现了n个数全排列的算法

    本实例将详细阐述一种实现n个数全排列的算法。 全排列算法的基本思想是回溯法,也称为深度优先搜索(DFS)。回溯法是一种试探性的解决问题的方法,当尝试一条路径无法得到正确结果时,会返回上一步,尝试其他可能的...

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

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

    objective-c数组全排列算法

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

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

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

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

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

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

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

    排列组合的全排列算法(交换算法)

    全排列算法是计算机科学中处理数组或集合的一种经典方法,主要应用于组合数学和算法设计领域。在本场景中,我们关注的是"交换算法",它用于生成一个给定数组的所有可能排列。全排列是指从n个不同元素中取出m个元素...

    关于全排列算法

    全排列算法是计算机科学中的一种经典算法,主要应用于解决如何生成一个给定集合的所有可能排列的问题。在给定的题目中,作者通过一个简单的递归方法实现了全排列的计算。以下是对该算法的详细解析: 首先,我们来看...

    全排列算法

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

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

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

    全排列的生成算法

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

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

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

    递归全排列算法

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

    组合数学全排列生成算法

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

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

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

    Java全排列算法字典序下的下一个排列讲解

    在计算机科学中,全排列算法是一种非常重要的算法,它可以将一个数组或集合中的所有元素排列成不同的顺序。今天,我们将讨论如何使用Java实现全排列算法,并且讨论字典序下的下一个排列。 在讨论前,我们需要了解...

    C#算法之全排列递归算法实例讲解

    排列:从n个元素中任取m个元素,并...(1)n个元素的全排列=(n-1个元素的全排列)+(另一个元素作为前缀); (2)出口:如果只有一个元素的全排列,则说明已经排完,则输出数组; (3)不断将每个元素放作第一个元素,然

Global site tag (gtag.js) - Google Analytics