`
zwhc
  • 浏览: 264019 次
  • 性别: 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
分享到:
评论

相关推荐

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

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

    一种计算全排列的简易算法

    在给定的标题“一种计算全排列的简易算法”中,我们可以推测这是一种简化版的全排列算法实现。全排列算法通常有多种实现方式,例如深度优先搜索(DFS)、回溯法、栈或者队列等。这种简易算法可能是通过递归或迭代的...

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

    ### 全排列算法解析 #### 1. 全排列的定义和公式 全排列是指从一个包含`n`个不同元素的集合中选取全部`n`个元素,并按一定顺序排列形成的不同序列总数。数学上,`n`个不同元素的全排列数记为`n!`(`n`的阶乘),即...

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

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

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

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

    全排列算法实现(C)

    实现全排列组合的算法,供大家学习与参考。在需要对排列组合做差异分析的时候可以直接使用。例如:几个正则式的不同排列组合对匹配效果的影响

    objective-c数组全排列算法

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

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

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

    全排列算法

    在实现全排列时,我们通常会遇到一种称为“回溯”的技术。当我们在某一步发现当前的选择无法导出有效的排列时,就需要撤销这一步,尝试其他的可能性。回溯法有助于避免陷入死胡同,确保找出所有可能的解。 3. **...

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

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

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

    本文件主要介绍了四种权威的全排列生成算法,分别是字典序(基于中介数)算法、字典序(基于相邻排列特征)算法、递增进位制数法和递减进位制数法。这些算法可以帮助程序员有效地生成一个给定数组的所有可能全排列,...

    关于全排列算法

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

    序数法全排列

    序数法全排列 序数法全排列是指使用序数法来生成全排列的算法,该算法结合组合数学上的思想,可以使用C语言实现。下面将对序数法全排列的知识点进行...序数法全排列是一种高效的全排列生成算法,广泛应用于很多领域。

    组合数学全排列换位算法

    组合数学全排列换位算法组合数学全排列换位算法组合数学全排列换位算法组合数学全排列换位算法组合数学全排列换位算法组合数学全排列换位算法组合数学全排列换位算法组合数学全排列换位算法

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

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

    C语言全排列算法函数库

    入口函数 void perm(int *list, int k, int m,int ...假设求m个数的全排列,则: 第一个参数存储了1-m这m个数 第二个参数为0 第三个参数为m-1 第四个参数开辟了一个m!行、m列的内存区域,用于保存计算所得的全排列

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

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

    组合数学全排列生成算法

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

    全排列-非递归算法

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

Global site tag (gtag.js) - Google Analytics