Olá galera, tudo bem? Eu precisava de ajuda em um algoritmo assim:Eu tenho um N número de APs (acess point), e cada um desses APs tem um canal e uma frequência
Canais de 1 até M
Frequência de 1 até K
tem que encontrar todas as possibilidades de valores, por exemplo eu tenho 3 APs, e 4 canais e 5 frequências,Mas
ap1 ap2 ap3
C 1-1-1
F 1-1-1
ap1 ap2 ap3
1-1-1
1-1-2
ap1-ap2-ap3
1-1-1
1-2-2
E assim até terminar todas as combinações, alguém pode me ajudar com a lógica? Eu comecei tentando com um algoritmo recursivo, mas a lógica vai ficando muito difícil, Exemplo do que eu estava tentando :
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
static const char alphabet[] =
"12123";
int max = 0;
int *pont;
static const int alphabetSize = sizeof(alphabet) - 1;
void bruteImpl(char* str, int index, int maxDepth)
{
int i;
for (i = 0; i < alphabetSize; ++i)
{
str[index] = alphabet[i];
if (index == maxDepth - 1)
{
fprintf(pont,"%s\n", str);
}
else bruteImpl(str, index + 1, maxDepth);
}
}
void bruteSequential(int maxLen)
{
char* buf = malloc(maxLen + 1);
int i;
for (i = 1; i <= maxLen; ++i)
{
memset(buf, 0, maxLen + 1);
bruteImpl(buf, 0, i);
}
free(buf);
}
int main(void)
{
FILE *arq = fopen("teste.txt","w");
fclose(arq);
arq = fopen("teste.txt","w+");
FILE *output = fopen("saida.txt","w");
pont = arq;
int i=0,j;
char aux[50],aux2[50];
bruteSequential(5);
rewind(pont);
while ((fscanf(pont,"%s",aux))!=EOF)
{
if(aux > 9999)
i++;
}
printf("%d",i);
return 0;
}
A bx