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编程中的算法思维至关重要。算法是计算机科学的基础,它们是解决问题和执行任务的步骤序列,而Java作为面向对象的语言,提供了丰富的工具和库来...
根据给定的信息,本文主要探讨了一种自适应回波抵消算法的研究,尤其是在通信网络中的应用。回波抵消技术对于提升通信质量至关重要。接下来,我们将深入解析该文涉及的关键概念和技术细节。 ### 回波抵消技术 回波...
本文将重点讨论一种高效模式匹配算法——Wu-Manber算法。 Wu-Manber算法是由Manber和Wu在1993年提出的一种并行和预处理的字符串匹配算法。它通过预处理模式库,创建一个小型的哈希表,使得在实际匹配过程中可以显著...
L-M算法是Levenberg-Marquardt算法的简称,它是误差逆传播算法(即BP神经网络算法)的一种优化形式,旨在解决非线性最小二乘问题。在BP神经网络中,训练过程通常会遇到收敛速度慢、容易陷入局部极小值等问题,而L-M...
根据给定文件信息,以下是关于“对文字进行矢量化的一种算法研究”的详细知识点: 激光雕刻系统在传统的文字处理中,通常采用的是位图形式的文字存储方式。位图(Bitmap)是一种栅格图像,它通过记录图像每个像素的...
每种算法都会包含其原理介绍、步骤描述、代码实现以及可能遇到的问题和解决方案。通过实例,读者可以更好地理解和应用这些算法。 学习这些算法可以帮助Java开发者提升解决问题的能力,特别是在处理复杂数据和进行高...
因此,需要有一种算法能够找到建模图像与待识别图像之间的映射关系,将待识别图像映射到建模图像空间进行识别。 针对这一问题,提出了基于加速鲁棒特征(Speeded-Up Robust Features,简称SURF)的图像空间变换算法...
此外,还需要了解相关领域的最新研究进展,如机器学习、人工智能在机器人寻迹算法中的应用,以及各种传感器技术的发展。随着技术的进步,寻迹算法也在不断发展和完善,对于技术人员来说,不断学习和实践是掌握这一...
狼群算法是一种基于生物行为的优化算法,模拟了自然界中狼群狩猎的过程来寻找问题的全局最优解。MATLAB是一种强大的数值计算和数据分析环境,它提供了实现各种优化算法的便利工具箱,包括狼群算法。这个压缩包“狼群...
这两种算法的基本思想是在输入数据流中查找重复出现的字符串,并用更短的符号来代替这些重复的字符串,从而达到压缩的效果。LZW算法则是LZ78的一个变种,由特里·韦尔奇(Terry Welch)在1984年提出,它使用了一个...
文件"BmMatch"可能包含了BM算法或N-BOX算法的具体实现代码,通过阅读和理解这些代码,可以更深入地掌握这两种算法的工作原理和优化技巧。 总之,BM算法和N-BOX算法是字符串匹配领域的经典算法,它们通过巧妙地利用...
用户可以通过阅读和分析代码,理解每种算法的工作原理,以及MATLAB如何应用于遗传算法的实现。此外,这也可以作为学习和研究遗传算法及其改进策略的实践案例,帮助开发者进一步优化和定制自己的遗传算法求解器。 总...
动态规划是一种解决最优化问题的有效方法,常用于解决背包问题、最长公共子序列等问题。贪心算法则是在每一步选择局部最优解,以期望达到全局最优,如Prim算法和Dijkstra算法在图论中的应用。 第五章可能会涉及图...
本文介绍了一种针对人脸识别的监督局部线性嵌入(Supervised Locally Linear Embedding, SLLE)算法的改进方法,旨在提高人脸识别的准确性和性能。局部线性嵌入(Locally Linear Embedding, LLE)是一种非线性降维...