`

工作中遇到的一种算法

    博客分类:
  • Java
 
阅读更多

      public static void main(String[] args) {
		String str = "A/B/D; B/G; B/C/F";
		StringBuffer sb = new StringBuffer();
		if (str.contains("; ") && str.contains("/")) {
			String[] semSplit = str.split("; ");
			int semSplit_length = semSplit.length;
			List<String[]> list = new ArrayList<String[]>();
			for (int i = 0; i< semSplit_length; i ++) {
				String[] Left_slash = semSplit[i].split("/");
				list.add(Left_slash);

			}
			computeStr(list);
			// System.out.println("LEFT SLASH :"+Left_slash.length+" Count:"+leftCount);
		}

	}

	private static void computeStr(List<String[]> list) {
		int[] num = new int[list.size()];
		int[] postion = new int[list.size()];
		postion[list.size() -1] =-1;
		for(int i = 0; i < list.size(); i ++) {
			num[i] = list.get(i).length;
		}
		while(getNextPostion(num, postion)) {
			for(int i =0 ; i < postion.length; i ++) {
				System.out.print(list.get(i)[postion[i]]);
			}
			System.out.println();
		}

	}

	private static boolean getNextPostion(int[] num, int[] postion) {
		postion[postion.length -1] ++;
		for(int i = postion.length -1 ; i > 0; i --) {
			if(postion[i] >= num[i]) {
				postion[i -1] ++;
				postion[i] = postion[i] % num[i];
			}
		}
		if(postion[0] >= num[0]) {
			return false;
		} else {
			return true;
		}
	}

 这个是用来把字符串“String str = "A/B/D; B/G; B/C/F";”变成18个字符的算法

先以;做分隔,再以/做分隔

以;做分隔的字符都要取,以/做分隔的字符要取其中一个

也就是说,每一次取

A B D要取并取其中一个

B G 要取并取其中一个

B C F要取并取其中一个

那么所有的取法是什么

 

算法思想是:做加法,初法将值设为-1,每次做加1的动作,直到加满。进位就要根据所在位置的字符串的长度来进位。这样就能依次遍历所有。

分享到:
评论

相关推荐

    用于多目标优化的一种微遗传算法

    在《用于多目标优化的一种微遗传算法》中,作者可能探讨了以下几个关键点: 1. **编码方式**:为了处理多目标问题,算法可能采用了适当的编码策略,如二进制编码或实数编码,以便将多个目标的解决方案表示为一个...

    四种页面置换算法代码

    这是一种理想化的算法,它假设操作系统知道未来所有页面访问序列,因此可以预测出在未来最长时间内不会被使用的页面进行替换。在实际操作中,由于无法预知未来的访问序列,所以Optimal算法通常只作为理论上的最优解...

    Java算法大全(近100种算法打包)

    Java算法大全是一个全面涵盖近100种算法的资源包,对于学习和提升Java编程中的算法思维至关重要。算法是计算机科学的基础,它们是解决问题和执行任务的步骤序列,而Java作为面向对象的语言,提供了丰富的工具和库来...

    一种模式匹配算法的优化

    本文将重点讨论一种高效模式匹配算法——Wu-Manber算法。 Wu-Manber算法是由Manber和Wu在1993年提出的一种并行和预处理的字符串匹配算法。它通过预处理模式库,创建一个小型的哈希表,使得在实际匹配过程中可以显著...

    迷宫算法迷宫算法

    在解决迷宫问题时,我们通常需要设计或选择一种算法来帮助“虚拟角色”或者程序从起点找到终点。下面将详细介绍几种常见的迷宫算法及其原理。 1. 广度优先搜索(BFS) 广度优先搜索是一种图遍历算法,适用于有向无...

    JAVA数值算法(近百种算法)中文文档 实例

    每种算法都会包含其原理介绍、步骤描述、代码实现以及可能遇到的问题和解决方案。通过实例,读者可以更好地理解和应用这些算法。 学习这些算法可以帮助Java开发者提升解决问题的能力,特别是在处理复杂数据和进行高...

    EM算法 机器学习算法 c

    在EM算法中,我们通常面对的是观测数据不完全或者存在缺失的情况,而目标是找到能够最大化后验概率的参数估计。 标题提到的"EM算法 机器学习算法 c"表明我们将讨论EM算法在C语言环境中的实现。C语言是一种底层编程...

    狼群算法MATLAB.zip_matlab 狼群算法_最优化算法_狼群_狼群算法_狼群算法优化

    狼群算法是一种基于生物行为的优化算法,模拟了自然界中狼群狩猎的过程来寻找问题的全局最优解。MATLAB是一种强大的数值计算和数据分析环境,它提供了实现各种优化算法的便利工具箱,包括狼群算法。这个压缩包“狼群...

    BM算法 N-BOX算法

    文件"BmMatch"可能包含了BM算法或N-BOX算法的具体实现代码,通过阅读和理解这些代码,可以更深入地掌握这两种算法的工作原理和优化技巧。 总之,BM算法和N-BOX算法是字符串匹配领域的经典算法,它们通过巧妙地利用...

    遗传优化及其2种改进算法,改进的遗传算法,matlab

    用户可以通过阅读和分析代码,理解每种算法的工作原理,以及MATLAB如何应用于遗传算法的实现。此外,这也可以作为学习和研究遗传算法及其改进策略的实践案例,帮助开发者进一步优化和定制自己的遗传算法求解器。 总...

    Gear_吉尔数值算法_吉尔算法_GEAR算法_GeaR微分方程_

    吉尔(Gear)数值算法,也称为GEAR(Generalized Exponential Runge-Kutta)算法或Gill算法,是一种高级的数值积分方法,主要用于求解常微分方程(ODE)系统,尤其是刚性微分方程组。这个算法以其出色的稳定性和收敛...

    一种用于人脸识别的监督局部线性嵌入算法及其改进.pdf

    本文介绍了一种针对人脸识别的监督局部线性嵌入(Supervised Locally Linear Embedding, SLLE)算法的改进方法,旨在提高人脸识别的准确性和性能。局部线性嵌入(Locally Linear Embedding, LLE)是一种非线性降维...

    KMP中文字符匹配算法的C++实现

    KMP(Knuth-Morris-Pratt)算法是一种在文本中高效查找子串出现位置的字符串搜索算法。它由D.E.Knuth、V.R.Morris和J.Pratt三位学者于1970年提出。KMP算法的核心是构建一个部分匹配表(也称为失败函数),用于在主串...

    二叉树三种遍历算法的源码背诵版

    二叉树是一种常用的数据结构,在计算机科学和软件工程中应用非常广泛。二叉树的遍历是指从根节点出发,按照某种顺序访问二叉树中的所有节点。二叉树的遍历有多种方式,本文将详细介绍二叉树的三种常见遍历算法:先序...

    漫画算法-小灰的算法之旅_漫画算法-小灰的算法之旅_算法_

    3. **图论算法**:小灰在旅途中可能会遇到复杂的关系网络,如迷宫或交通网络,这时会引入图的表示、深度优先搜索(DFS)、广度优先搜索(BFS)、最短路径算法(Dijkstra、Floyd-Warshall)等。这些算法帮助解决节点...

    51种经典算法(C)

    《51种经典算法(C)》是一本深入学习算法的资源,主要使用C语言进行实现,虽然描述中提到可以运用其他语言复现,但核心是理解和掌握算法的逻辑与思想。C语言作为底层编程语言,能让我们更接近计算机底层,理解算法...

    matlab将chow算法和camppelo算法结合的一种算法,附带源程序,有说明.rar

    本篇文章将详细探讨一种结合Chow算法和Campello算法的方法,该方法被实现于MATLAB编程环境中,并且提供了源代码和相关说明。MATLAB作为一种强大的开发语言,常用于科学计算和工程应用,因此这样的结合对研究者和...

    L-M算法(BP的一种改进算法)应用实例.zip_BP_BP L-M_LM_改进BP算法_算法改进

    L-M算法是Levenberg-Marquardt算法的简称,它是误差逆传播算法(即BP神经网络算法)的一种优化形式,旨在解决非线性最小二乘问题。在BP神经网络中,训练过程通常会遇到收敛速度慢、容易陷入局部极小值等问题,而L-M...

    基于遗传模拟退火算法的聚类算法

    在聚类问题中,模拟退火可以与遗传算法结合,提供一种在解空间中智能探索的方法。 "基于遗传模拟退火算法的聚类算法"是将这两种优化策略结合起来,形成一种更强大的聚类模型。它可能的工作流程如下: 1. 初始化:...

    深度优先搜索(DFS),算法中的探险家!dfs深度优先搜索(DFS)是一种计算机科学中的算法,用于遍历或搜索树或图 它通过从起始

    dfs深度优先搜索(DFS)是一种计算机科学中的算法,用于遍历或搜索树或图。它通过从起始节点开始,沿着一个分支深入到不能再深入为止,然后回溯到上一个节点,继续沿着另一个分支深入,以此类推,直到遍历完所有节点...

Global site tag (gtag.js) - Google Analytics