我一组中有10,000个物品,每个物品都必须制成三合会。我需要一种算法来有效地找到每个三合会。
例如:
{A,B,C,D,...}
1.AAA2个3,瑞声4号...
一直到ZZY,ZZZ。
我使用的方法效率很低,我创建了一个嵌套的forloop 3,该forloop遍历一个数组,该数组的运行时间为O(N ^ 3),性能明显很差。哪种算法和数据结构会更好呢?谢谢
用于从一组n个字符中打印K长度的所有排列的功能,重复字符:
static void printKLengthPerm(char[] set, String prefix, int n, int k)
{
if (k == 0)
{
System.out.println(prefix);
return;
}
for (int i = 0; i < n; i++)
{
String newPrefix = prefix + set[i];
printKLengthPerm(set, newPrefix, n, k - 1);
}
}
调用该函数从一组所有大写英文字母打印3个长度的所有排列:
char[] set = new char[26];
for(int i = 0; i < 26; i++)
set[i] = (char)(i+65);
int n = set.length;
printKLengthPerm(set, "", n, 3);