Ir ao conteúdo

Posts recomendados

Postado

Alguém poderia me ajudar a passar esse código de java para portugol?

Desde já obrigado.

 

#include <stdio.h>

void io(int puzzle[][9], int n, int f)
{
  int i, j;

  for(i = 0; i < n; i++)
  {
    for(j = 0; j < n; j++)
    {
      if(f) scanf("%d", &puzzle[i][j]);
      else  printf("%d ", puzzle[i][j]);
    }
    if(!f)
      printf("\n");
  }
}
/* i e j representam a linha e a coluna, respectivamente
da célula que queremos preencher com o número x */

// puzzle matriz onde se encontra o sudoku</pre>
int isPossible(int i, int j, int puzzle[][9], int x)
{
    int l, k, lin, col;
    for(k = 0; k < 9; k++)
    {
        if(puzzle[k][j] == x) return 0; // procura na colula j
        if(puzzle[i][k] == x) return 0; // procura na linha i
    }

    lin = (i / 3) * 3; /* essa operação fornece a linha
                        da primeira célula do quadrante*/
    col = (j / 3) * 3; /* essa operação fornece a coluna
                        da primeira célula do quadrante*/
    // procura na sub grade
    for(l = lin; l < lin+3; l++)
    {
        for(k = col; k < col+3; k++)
        {
            if(puzzle[l][k] == x)
                return 0;
        }
    }
    return 1;
}
int solve(int puzzle[][9], int i, int j)
{
    int x, lin, col;
    col = j; lin = i;

    if(i == 9) // Econtramos uma solução
        return 1;

    // 1
    if(col < 8) col++;
    else
    {
        lin++;
        col = 0;
    }

    // 2
    if(puzzle[i][j]) return solve(puzzle, lin, col);
    else
    {
        for(x = 1; x <= 9; x++) // 2.1
        {
            if(isPossible(i, j, puzzle, x))
            {
                puzzle[i][j] = x;
                // 3
                if(solve(puzzle, lin, col)) return 1;
                puzzle[i][j] = 0;
            }
        }
    }
    return 0; // não encotramos solução
}

int main(void)
{
  int n, x;
  n = 9;

  int puzzle[9][9];
  io(puzzle, n, 1);

  x = solve(puzzle, 0, 0);
  if(x) io(puzzle, n, 0);
  else printf("Nao existe solucao\n");

  return 0;
}

 

adicionado 0 minutos depois

Ele serve para resolver um sudoku mas estou com dificuldades para passar ele.

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!