bom gente, preciso de um help… eu tenho uma busca em profundidade q funciona uma matriz, pegando o valor inserido nela… mas eu preciso q ela funciona mostrando as posições da matriz… pois eh uma matriz de 0 e 1 (um labirinto 0 espaço vaizio e 1 parede) só q não tou conseguindo desembolar…
esse eh o meu grafo:
[code]public class Digrafo
{
int numVertice;
int matAdj[][];
public Digrafo(int num)
{
int i,j;
this.numVertice=num;
int matAdj[][]=new int[num+1][num+1];
for(i=1;i<=num;++i)
for(j=1;j<=num;++j)
matAdj[i][j]=0;
this.matAdj = matAdj;
}
public void insereVertice(int v1, int v2)
{
if (v1<=numVertice && v2<=numVertice)
matAdj[v1][v2]=1;
}
public void retiraVertice(int v1, int v2)
{
if (v1<=numVertice && v2<=numVertice)
matAdj[v1][v2]=0;
}
public String Grafo()
{
int i,j;
String x="";
for(i=1;i<=numVertice;++i)
for(j=1;j<=numVertice;++j)
if(matAdj[i][j]==1)
x=x+"\n("+i+", "+j+")";
return x;
}
}
[/code]
esse eh a minha busca…
private void jBtnBuscaemProfundidade_actionPerformed(ActionEvent e)
{
int visited[] = new int[G.numVertice+1];
int pai[] = new int[G.numVertice+1];
int p[] = new int[G.numVertice*G.numVertice+1];
int orig =Integer.parseInt(jTxtFldVertice1.getText());
int dest =Integer.parseInt(jTxtFldVertice2.getText());
int topo=1, atual, i;
boolean encontrou = false;
String caminho = "";
for (i=1;i<=G.numVertice;++i)
{
pai[i]=0;
visited[i]=0;
}
for (i=1;i<=G.numVertice*G.numVertice;++i)
p[i]=0;
p[topo]=orig;
while (topo>0)
{
atual = p[topo];
--topo;
if (atual == dest)
{
encontrou = true;
break;
}
if (visited[atual]==0)
for (i=1; i<=G.numVertice;++i)
if (G.matAdj[atual][i]==1)
{
++topo;
p[topo]=i;
if (pai[i]==0)
pai[i]=atual;
}
}
if (encontrou)
{
topo=0;
caminho=""+dest;
i=pai[dest];
while (i!=orig)
{ ++topo;
caminho=i+"\n"+caminho;
i=pai[i];
}
caminho=orig+"\n"+caminho;
JOptionPane.showMessageDialog(null,caminho);
}
}
grato aew…
valew