Eae galera Beleza, sou iniciante em programação e to fazendo um trabalho e encontrei dificuldade pra continuar o código, eu fiz o programa e o laço pra descobrir o menor, o problema é quando esse menor já faz parte do caminho, n sei como excluir ele dessa busca, segue a questão:
Considere um “caminho” construído dentro dessa matriz, iniciado no elemento [1][1] e no qual o sucessor de cada elemento é o menor dos seus vizinhos que ainda não faça parte do caminho. O final do caminho ocorre quando for atingido um elemento na “borda” da matriz, ou seja, na primeira ou na última linha ou na primeira ou na última coluna. Escreva um programa que construa uma matriz como essa, 10x10, e mostre na tela o somatório dos valores que formam o caminho.
Código que começei:
#include <stdio.h>
#define TAM 10
main(){
int matriz[TAM][TAM];
int espelho[TAM][TAM];
int i, j, soma, flag;
printf("Digite os valores da matriz");
for(i=0; i<TAM; i++)
for(j=0; j<TAM; j++)
scanf("%d", &matriz[i][j]);
//espelho pra excluir os números usados
for(i=0; i<TAM; i++)
for(j=0; j<TAM; j++)
espelho[i][j]=0;
soma = matriz[1][1];
espelho[1][1]=1;
//laço pra percorrer o caminho
for(i=1, j=1; i!=0 && j!=0 && j<(TAM) && i<(TAM) && flag!=0; ){
flag=0;
if(matriz[i+1][j] <= matriz[i-1][j] && matriz[i+1][j] <= matriz[i][j+1] && matriz[i+1][j] <= matriz[i][j-1] && espelho[i+1][j] != 1){
i++;
soma = soma + matriz[i][j];
espelho[i][j] = 1;
flag=1;
continue;
}
if(matriz[i-1][j] <= matriz[i+1][j] && matriz[i-1][j] <= matriz[i][j+1] && matriz[i-1][j] <= matriz[i][j-1] && espelho[i-1][j] != 1){
i--;
soma = soma + matriz[i][j];
espelho[i][j] = 1;
flag=1;
continue;
}
if(matriz[i][j+1] <= matriz[i+1][j] && matriz[i][j+1] <= matriz[i-1][j] && matriz[i][j+1] <= matriz[i][j-1] && espelho[i][j+1] != 1){
j++;
soma = soma + matriz[i][j];
espelho[i][j] = 1;
flag=1;
continue;
}
if(matriz[i][j-1] <= matriz[i+1][j] && matriz[i][j-1] <= matriz[i-1][j] && matriz[i][j-1] <= matriz[i][j+1] && espelho[i][j-1] != 1){
j--;
soma = soma + matriz[i][j];
espelho[i][j] = 1;
flag=1;
continue;
}
}
printf("a soma é %d ", soma) ;
}