ahhsxxx Postado Outubro 10, 2011 Denunciar Share Postado Outubro 10, 2011 (editado) 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 Outubro 10, 2011 por ahhsxxx Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
ahhsxxx
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 ahhsxxxLink para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
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.