たとえば、もしN = 4 1があるなら、上の三角形と下の三角形それぞれの2 1と対称な各順列で3x3の行列を埋めたいと思う。私は[010,101,010]、[001,001,110]、[011,100,100]を取得します。対角がゼロで、他の要素にN 1があるように、行列を1と0で再帰的に満たす方法はありますか?
0
A
答えて
0
これはどうですか?
void matrixFill(int[,] m, int n)
{
m[n-1, n-1] = 0;
if (n > 1)
{
for (int i = 0; i < n-1; i++)
{
m[i, n-1] = 1;
m[n-1, i] = 1;
}
matrixFill(m , n-1);
}
}
各レベルの再帰は、1つの対角要素と、この要素と交差する残りの行/列を設定します。明示的な反復なし
第二の試み:
// 1st call matrixFill2(m , n-1, n-1)
void matrixFill2(int[,] m, int x, int y)
{
if ((x >= 0) && (y >= 0))
{
m[x, y] = (x == y) ? 0 : 1;
matrixFill2(m, x-1, y);
matrixFill2(m, x, y-1);
matrixFill2(m, x-1, y-1);
}
}
このバージョンでは、複数回のマトリックス・セルを設定します。行/列のインデックスは変更されずに維持されます。したがって、再帰は最終的に終了します。
0
#Figured it out
from __future__ import print_function
import itertools
import numpy as np
N = 4
S = N*(N-1)/2
E = 3
which = np.array(list(itertools.combinations(range(S), E)))
grid = np.zeros((len(which), S), dtype="int8")
grid[np.arange(len(which))[None].T, which] = 1
for perm in range(len(grid)):
grid_num = perm
A = np.zeros((N,N))
counter = 0
for i in range(N):
for j in range(i):
A[i][j] = grid[grid_num][counter]
A[j][i] = grid[grid_num][counter]
counter = counter + 1
print()
print(A)
関連する問題
- 1. 角、1つの要素が真であるときに他の要素を偽にする方法
- 2. array.lengthは0ですが、配列に要素があります
- 3. 特定の行と列の合計を満たすために、0と1のRで行列を生成する方法はありますか?
- 4. 再帰的な方法でN/2〜Nを1にN/2を加えて合計1〜Nを計算する
- 5. 行列要素をRの0 | 1から1 | 0に変換するには?
- 6. インラインで制限する方法jQgrid 1列の値は100未満である必要があります
- 7. 1対1テーブルの対応する行が削除されたときに、テーブル内の行を自動的に削除する方法はありますか?
- 8. 1列に2つの配列をマージ(要素があまりにもマージする必要があります)
- 9. CSSの配置:1つの要素に対して相対的なものにする方法はありますが、他の要素には相対的な方法はありませんか?
- 10. RetrofitとSpotify API:BEGIN_OBJECTが必要ですが、1行目の列1の行にSTRINGがありました$
- 11. バイナリツリーに再帰的に挿入する方法と再帰的に要素を印刷する方法はありますか?
- 12. Tensorflow:optimizer.minimize() - "ValueError:Shapeはランク0である必要がありますが、ランク1です
- 13. NSImageのカラーチャンネルの1つをゼロにする必要があります。これを行うには正しい方法はありますか?
- 14. symfony 1.4には1対1のチャットプラグイン/アプリケーションがありますか?
- 15. 対角要素が行列である行列を作成します。
- 16. php nullが0、ゼロが0である必要があります
- 17. min_samples_splitは少なくとも2または(0、1)である必要があります。1
- 18. 2つの配列に同じ要素があるかどうかを調べる再帰的方法
- 19. Boost.Buildが#includeディレクティブのヘッダファイルを再帰的にスキャンしないようにする方法はありますか?
- 20. 他の要素に応答するが、これはあなたが要素にどのように対応するかであるjQueryを
- 21. html要素を強制的に1行にする方法はありますか?
- 22. oracle sqlは、0行が選択されたときに1行を戻す必要があります。
- 23. 関数がPythonで再帰的であるかどうかを調べる方法はありますか?
- 24. 1行あたりの0の数をカウントし、n個以上のゼロを含む行を削除します。
- 25. バリアント配列に0要素がありますか?
- 26. 空の要素を文字列配列から1行で削除する方法はありますか?
- 27. 1行のスクリプトを1行のコマンドにする方法はありますか?
- 28. 1つの行に2つのdiv要素がありますが、1つは透明です。
- 29. 何が良いですか:WHERE n = 0またはWHERE n!= 1
- 30. 整数行列を、対応する要素がビン(整数行列の要素)である行列に、どのように変換できますか?
なぜ再帰的に行う必要がありますか?問題を再帰的に解くことは、問題を同じではあるが小さい問題に分割し、小さなものを最初に解いてから、再帰を使ってより大きなステップに進めることを意味します。しかし、それはここに当てはまるようには見えません。それをそうする方法で考えることはできません。どのように再帰を使用してそれを解決することを考えましたか、多分私はあなたを助けることができます –
それについて申し訳ありません、私は再帰を意味しないと思う、0,1行列のすべての並べ替えを対角に沿って1と0のすべての量。 –