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

AJUDA para entendimento de algoritmo


ahhsxxx

Pergunta

Dont get rooked

#include <iostream>

#include<string.h>

#include <stdio.h>

#include <cmath>

using namespace std;

int n ;

int tab[4][4];

void cancelar(int r,int c ,int estado)

{

int i;

for(i=c;i<n && tab[r] != -1;i++)

tab[r] +=estado;

for(i=r;i<n && tab[c] != -1;i++)

tab[c] +=estado;

}

int resolver(int pos,int torres)

{

int mx = torres;

int i;

for(i=pos;i<16;i++)

if(tab[i/4][i%4]==0)

{

cancelar(i/4,i%4 ,1);

//retorna o maior

mx = max(resolver(i+1 , torres+1) , mx);

cancelar(i/4,i%4,-1);

}

return mx;

}

int main()

{

cin >> n;

while(n)

{

int i,j;

char c;

memset(tab , -1,sizeof(int)*16);

for(i=0;i<n;i++) {

for(j=0;j<n;j++)

{

cin >> c;

if(c == '.')

tab[j] = 0;

}

}

int resolucao = resolver(0,0);

cout << resolucao << endl;

cin >> n;

}

return 0;

}

tenho que apresentar esse algoritmo do uva em sala de aula e n sou muito bom com lógica de programação... o algoritmo consiste num tabuleiro onde são colocados o máximo de torres possiveis sem q elas se encontrem ou se matem! té +

Editado por ahhsxxx
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

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,1k
    • Posts
      651,9k
×
×
  • Criar Novo...