私は次の問題について助けていただければ幸いです。私は0からn-1までのn個の整数を持っており、連続した整数のすべての対が等しくないように、長さk(すなわちk連結整数)のすべての可能な組み合わせのリストを生成しようとしています。たとえば、(1)(2)(3)(2)はk = 4で有効ですが、(1)(2)(3)(3)は有効ではありません。どのようにこれに最も効率的にアプローチする上の任意のアイデア? (私は気にしない長さ/コードの複雑度、単に効率について多く)それはコードである整数の組み合わせ
Q
整数の組み合わせ
-2
A
答えて
3
:
void Generate(int[] source, List<int[]> result, int[] build, int k, int num) {
if (num == k) {
int[] a = (int[])build.clone();
result.add(a);
return;
}
for (int i = 0; i < source.length; i++)
if (num == 0 || source[i] != build[num - 1])
{
build[num] = source[i];
Generate(source, result, build, k, num + 1);
}
}
を呼び出す方法:
int k = 2;
List<int[]> a = new ArrayList<int[]>();
Generate(new int[]{1,2,3}, a, new int[k], k, 0);
0
public static void recursiveOutput(Integer n, int k, int limit, String prints){
k++;
if(k>limit)
return;
String statePrints = prints;
//cycle through all available numbers
for(Integer i = 1; i<=n; i++)
{
statePrints = prints;
//First cycle
if(k==1){
statePrints+= "(" + i.toString() + ")";
recursiveOutput(n, k, limit, statePrints);
}
//check if predecessor is not the same
if(i != Integer.parseInt(statePrints.substring(statePrints.length()-2,statePrints.length()-1))){
statePrints += "(" + i.toString() + ")";
recursiveOutput(n, k, limit, statePrints);
}
}
//Check if the length matches the combination length
if(statePrints.length() == 3 * limit)
System.out.println(statePrints);
}
は、電話:recursiveOutput(3,0,4,"");
0
public class Generator {
final int k = 2;
final char[] n = new char[]{'0','1','2','3','4','5','6','7','8','9'};
final char[] text = new char[k];
public void gen(int i, int not_n) {
if(i == k) {
System.out.println(text);
return;
}
for(int j = 0; j < n.length; j++) {
if(j == not_n) continue;
text[i] = n[j];
gen(i+1, j);
}
}
public static void main(String[] args) {
new Generator().gen(0, -1);
}
}
関連する問題
- 1. 組み合わせ変数
- 2. 2つの整数とビットシフトの組み合わせ
- 3. 定数の組み合わせの数
- 4. データウェアハウス:冗長な組み合わせの組み合わせ
- 5. 計算大数の組み合わせ
- 6. ユニークな組み合わせの数
- 7. 行の数と組み合わせ
- 8. ロックの組み合わせ
- 9. ワイアードの組み合わせ
- 10. javacript関数を組み合わせる
- 11. 組み合わせ質問
- 12. 組み合わせmysql mongodb
- 13. 組み合わせ条件
- 14. 組み合わせが
- 15. 組み合わせ選択
- 16. 2-組み合わせC++
- 17. 整数は、同じクラスまたはスカラーの整数と組み合わせることができ、エラー
- 18. 組み合わせの縦横のアコーディオン
- 19. vb.netのキーの組み合わせ
- 20. C++の円の組み合わせ
- 21. SQLフィルタの列の組み合わせ
- 22. プライムフェイスのメニューの組み合わせ
- 23. Javaの組み合わせの生成
- 24. キーボードのログの組み合わせ
- 25. 数値と数値の組み合わせ
- 26. 複数の単純なjQuery関数を組み合わせる
- 27. 組み合わせキーイベントの検出
- 28. インラインプラグマとタイプクラスの組み合わせ
- 29. ISupportInCrementalLoadingとVariableSizedWrapGridの組み合わせ
- 30. ラケットの組み合わせ機能
@A。 R. S .: Louis Wassermanが「あなたは何を試してみましたか」という意味でしょうか?私たちにコードを示してください(具体的に動作しないものを教えてください)。 – ChristopheD
実際、彼はロック解除パターンをブルートフォースしようとしているように見えます。 – maybeWeCouldStealAVan