だから私は別のものの中で再帰的なプロシージャを使う必要があると思われる問題にちょっとした問題がありました。私はフラットな配列として4x4の行列を持っています。エントリの一部はゼロではなく、毎回同じ量ではありません。 0でないエントリのそれぞれに対して、その特定の値を交換できる候補のリストがあります。もちろん、ゼロ以外のすべてのエントリについてこれを行うことができます。私は、ゼロ以外のエントリの交換のすべての可能な組み合わせが、プロシージャの次のレベルに戻ることを望んでいます。Cの再帰的プロシージャ内で再帰呼び出しを呼び出す
例えば、手順の一のレベルへの入力は
2 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
2用の交換候補があると言う{1、3、4}、その後、それらの値のそれぞれについて、私が交換したいですその値で2を返し、次のレベルに再帰しますが、最初に私はの変換を適用します。その結果、多かれ少なかれ非ゼロの値が得られます。
例えば、我々が3で2を交換するとき、我々は(前と変換後)を取得することを起こるかもしれない
3 0 0 0 5 2 1 8
0 0 0 0 -> 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
、我々は3で2を交換する場合には、これは私たちです次のレベルの再帰で使用します。ここでは、5,2,1,8のそれぞれに置換候補があります。
私が苦労するのはこれです。私は行列内の非ゼロ値に対して可能な交換のすべての組み合わせを試みるだけで再帰を使う必要があると思うが、同時にそれらのそれぞれで "外側の手続き"の次のレベルに戻る。
これを達成するためのヒントを教えてください。私はCでコーディングしていますが、C++でも受け入れられます。
Cには 'std :: vector <> 'はありません。これは、ほんの少しの文法エラーです。 – pmg
あなたは「何をやるべきか」と言ったときに、何を意味するのかを具体的にすることはできますか? –