`
zwhc
  • 浏览: 269545 次
  • 性别: 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++等主流编程语言为例。 全排列算法的核心思想是通过递归地...

    组合数学全排列算法

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

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

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

    objective-c数组全排列算法

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

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

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

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

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

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

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

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

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

    关于全排列算法

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

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

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

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

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

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

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

    全排列的生成算法

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

Global site tag (gtag.js) - Google Analytics