Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #define MAX_WIDTH 200
- #define MAX_HEIGHT 50
- #define BIG_NUMBER 2137
- char tab[MAX_HEIGHT][MAX_WIDTH];
- int values[MAX_HEIGHT][MAX_WIDTH];
- int h=0,w;
- void resolve(int y, int x, int val){
- if(x<0 || y<0 || x==w || y==h) return;
- val++;
- if(values[y][x] == -1 || val < values[y][x]){
- values[y][x] = val;
- for(int i=-1;i<=1;i++)
- for(int j=-1;j<=1;j++)
- if(abs(i)+abs(j)==1)
- if(tab[y+j][x+i] >= tab[y][x]-1)
- resolve(y+j,x+i,val);
- }
- }
- void main(){
- int ex,ey;
- while(scanf("%s\n",tab[h++]) == 1);
- w=strlen(tab[0]);
- for(int i=0;i<h;i++){
- for(int j=0;j<w;j++){
- if(tab[i][j] == 'S'){
- tab[i][j]='a';
- } else if (tab[i][j] == 'E'){
- ey=i;
- ex=j;
- tab[i][j]='z';
- }
- values[i][j]=-1;
- }
- }
- resolve(ey,ex,-1);
- int min=BIG_NUMBER;
- for(int i=0;i<h;i++)
- for(int j=0;j<w;j++)
- if(tab[i][j] == 'a' && values[i][j] != -1 && values[i][j] < min)
- min = values[i][j];
- printf("min = %d\n", min);
- }
Advertisement
Add Comment
Please, Sign In to add comment