Ir para conteúdo
Fórum Script Brasil
  • 0

Ordenação de K elementos em R e C


TheEduOliveira

Pergunta

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

 

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Eu desisti da ideia do primeiro tópico e iniciei algo mais simples

comparar primeiro todos da frequencia e depois todos dos canais, é mais facil

por exemplo

3 APs, 2 frequencias

  • 1 1 1
  • 1 1 2
  • 1 2 1
  • 1 2 2
  • 2 1 1
  • 2 1 2
  • 2 2 1
  • 2 2 2

mas eu não sei por que, o código não funciona :(

 

#include <stdio.h>
#include <math.h>

main ()
{
	int j=0,key=1,cont=1,K,K2,M,i,AP,F,C;
	scanf("%d",&AP);
	scanf("%d",&F);
	scanf("%d",&C);
	K=pow(F,AP);
	K2=K;
	int FREQ[AP][K];
	M=AP;
	for(j=0;j<AP;j++)
	{
		for(i=0;i<K2;i++)
		{
			if(cont>F) cont=1;
			FREQ[j][i] = cont;
			key++;
			if(key==K)
			{
				cont++;
				key=1;
			}
			
		}
		cont=1;
		K=K/2;
		key=1;
	}
	for(i=0;i<K2;i++)
	{
		for(j=0;j<AP;j++)
			printf("[%d]",FREQ[i][j]);
		printf("\n");
	}
}
Editado por TheEduOliveira
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...