ここでは、特定の値を見つけるために2dのchar配列のすべての可能な組み合わせを使用する必要があるこの問題があります。2d文字配列をどのように並べ替えるか
void permutate(int i, int r, int m, int factor, int count, char** danceRoutines);
int main(void)
{
int routines, i, j, loop, factor, min, count = 0;
printf("Please enter the number of routines (min 2, max 10): \n");
scanf("%d", &routines);
factor = factorial(routines);
//Check for routine < 2 and routine > 10
if(routines < 2 || routines > 10)
{
printf("Please, between 2 and 10 \n");
return;
}
//Store the dancers they enter into a 2d array of size routines * MAX
char **danceRoutines = (char**)malloc(sizeof(char*) * routines);
for(i = 0; i < routines; i++)
{
char *s = (char*)malloc(sizeof(char));
scanf("%s", s);
danceRoutines[i] = s;
}
min = quickChanges(danceRoutines, routines, 0);
printf("This is min: %d", min);
permutate(0, routines, min, factor, count, danceRoutines);
for(loop = 0; loop < routines; loop++)
{
free(danceRoutines[loop]);
}
free(danceRoutines);
return 0;
}
void permutate(int i, int r, int m, int factor, int count, char** danceRoutines)
{
int k, l, test, last;
if(last == 0)
{
printf("%d", m);
}
for(k = 0; k < r; k++)
{
int length = strlen(danceRoutines[k]);
char *line = (char*)malloc(sizeof(char) * length);
strcpy(line, danceRoutines[k]);
strcpy()
for(l = 1; l < factor/r; l++)
{
}
}
}
ファクタは、基本的に関数に読み込まれる整数rの階乗である。 2dのchar配列の順列を作成する簡単な方法はありますか?
テンポラリ文字列 's'には1つのcharだけを割り当てますが、解放しないでください。また、 'strcpy()'? –
"特定の値を見つけるために、可能なすべての組み合わせを使用する必要があります。"あなたは何を達成したいですか?特定の値を探すためにすべての並べ替えを生成することは、過剰なもののように見えます。多分もっと良い解決策があるかもしれません。 –
申し訳ありませんが、私は何をすべきか分からないので、置換機能は不完全です。私は1D配列を置換するのにオンラインのものを見つけましたが、2Dのchar配列は見つかりませんでした。 ABC DEF ABCDE と ABC ABCDEが がDEF その後、私がする必要がある:私は基本的に私はこのように、文字の2次元配列の異なるバリエーションを持っているラインの周りに切り替えるようにしようとしています最小を計算しますが、私はそれを持っています。私はちょうど線を適切に切り替える方法を知る必要があるので、2次元配列がどのように見えるかのすべての可能な組み合わせを評価することができます。それは意味がある場合 –