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

    使用javascript写的全排列算法演示(分为回溯法演示和交换法演示)

    全排列算法是计算机科学中的一种基础算法,它用于找出一个给定序列的所有可能排列组合。在本案例中,我们关注的是使用JavaScript实现全排列的方法,包括回溯法和交换法。这两种方法都是解决全排列问题的有效策略,...

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

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

    关于全排列算法

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

    全排列生成算法字典序vc++源码

    全排列生成算法是一种在计算机科学中常见的问题,用于找出一个给定序列的所有可能排列方式。在本场景中,我们关注的是字典序排列,这是一种特定的全排列顺序,按照字典顺序排列所有可能的组合。VC++是Microsoft开发...

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

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

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

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

    组合数学全排列生成算法

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

    递归全排列算法

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

    全排列-非递归算法

    全排列是一种经典的算法问题,它涉及在给定的有限序列中找出所有可能的元素排列方式。在本例中,我们关注的是非递归算法来实现全排列,这通常使用回溯法或者迭代的方式来完成,特别是在有新元素动态加入时,需要能够...

    C语言将数据全排列算法

    此算法在递归的基础上实现的,可以输入数据,也可以把把改写成求组合的算法

Global site tag (gtag.js) - Google Analytics