Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #define N_MAX 75
- int i[N_MAX], j[N_MAX];
- int is_final(int i[], int j[], int pos, int N) {
- if (i[pos] == N - 1 && j[pos] == N - 1)
- {
- return 1;
- }else
- return 0;
- }
- int has_been_visited(int i[], int j[], int line, int col, int pos) {
- for (int k = 0; k < pos; ++k)
- {
- if (i[pos-1] == line && j[pos-1] == col)
- return 1;
- else
- return 0;
- }
- }
- int soma(int i[], int j[], int pos, int m[][N_MAX]) {
- int sum = 0, line, row;
- for (int k = 0; k <= pos; ++k)
- {
- line = i[k];
- row = j[k];
- sum += m[line][row];
- }
- //printf("soma: %d\n", sum);
- return sum;
- }
- int neg(int i[], int j[], int pos, int m[][N_MAX]) {
- int neg = 0, line, row;
- for (int k = 0; k <= pos; ++k)
- {
- line = i[k];
- row = j[k];
- if (m[line][row] < 0)
- {
- neg++;
- }
- }
- //printf("negativos: %d\n", neg);
- return neg;
- }
- void verifica(){
- }
- void move(int i[], int j[], int pos, int n, int m[][N_MAX]) {
- int line = i[pos];
- int col = j[pos];
- if (is_final(i, j, pos, n)) {
- printf("Caminho encontrado:");
- soma(i,j,pos,m);
- neg(i,j,pos,m);
- int max = 0;
- for (int k = 0; k <= pos; ++k)
- {
- printf(" -> [%d,%d]", i[k]+1, j[k]+1);
- }
- printf("\n");
- return;
- }
- if (line + 1 < n && !(has_been_visited(i, j, line+1, col, pos)))
- {
- // Down
- i[pos+1] = line + 1;
- j[pos+1] = col;
- move(i,j,pos+1,n,m);
- }
- if (col+ 1 < n && !(has_been_visited(i, j, line, col+1, pos)))
- {
- // Right
- j[pos+1] = col + 1;
- i[pos+1] = line;
- move(i,j,pos+1,n,m);
- }
- if (col - 1 >= 0 && !(has_been_visited(i, j, line, col-1, pos)))
- {
- // Left
- i[pos+1] = line;
- j[pos+1] = col - 1;
- move(i,j,pos+1,n,m);
- }
- }
- int main(int argc, char const *argv[])
- {
- int n;
- scanf("%d", &n);
- memset(i, 0, sizeof(int) * n);
- memset(j, 0, sizeof(int) * n);
- int m[N_MAX][N_MAX];
- for (int k = 0; k < n; ++k)
- {
- for (int l = 0; l < n; ++l)
- {
- m[k][l] = -2;
- }
- }
- i[0] = 0;
- j[0] = 0;
- move(i, j, 0, n, m);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement