在实践多线程时,我希望简单地构建一个应用程序,可以计算字符集的所有可能组合(即强力破解/匹配)并在线程之间分配工作,以真正测量并直接了解线程如何影响算法在不同系统上的时间。
到目前为止,计算这个的算法对我来说是一个巨大的挑战。在最近的一个线程中(将多线程添加到这个简单算法的有效方法是什么? https://stackoverflow.com/questions/5840799/what-would-be-an-efficient-way-to-add-multithreading-to-this-simple-algorithm)我似乎明白了我需要做什么(轻松地传递每个字符范围的特定部分来分配工作),尽管该算法根本不起作用,而且我不了解其复杂性足以在我的应用程序中修复它。
以一种简单的迭代方式,我如何计算给定字符集的每个组合,具有特定的长度(即长度为 5?)
在示例中:
unsigned char range[] = "abcdefghijklmnopqrstuvwxyz0123456789";
brute_force(range, len); //character set, length of string to compute all combinations of
//...
我将非常感激能够减轻一些寻找正确的概念的压力。
一种方法:
void brute_force(String range, int len) {
for (int i = 0; i < range.length(); ++i) {
final String x = "" + range.charAt(i);
Thread t = new Thread(){
public void run() { brute_force(x, range[].replace(x, ""), len); };
};
t.start();
}
}
Where brute_force(String, String, int)
将生成组合。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)