Go to diff to previous submission
#include <stdio.h> #include <stdlib.h> #define MAX 101*101 #define VYPIS 0 int pole[MAX]; //ulozenie v jednom poli int p1[8]={1,2,2,1,-1,-2,-2,-1}; int p2[8]={2,1,-1,-2,-2,-1,1,2}; int zac1, zac2; int kon1, kon2; int i,j,k,velkost, s1,s2, r1, r2, zmenilo_sa; //d-velkost int m, n; //rozmery int main(){ //vynulujeme pole zac1--; zac2--; kon1--; kon2--; velkost = m*n - 1; for(i=0; i<MAX; i++) {pole[i]=0;} //velkost+2 pole[zac1*m+zac2]=1; //zaciatok /* for(i=0; i<m; i++){ for(j=0; j<n; j++){ printf("%d ", pole[i*m +j]); } printf("\n"); } */ //vlna j=1; s1 = zac1; s2=zac2; zmenilo_sa = 1; while((pole[kon1*m+kon2]==0)&&(zmenilo_sa == 1)){ zmenilo_sa = 0; for(s1 = 0; s1<m; s1++){ for(s2 = 0; s2 < n; s2++){ if(pole[s1*m+s2]==j){ //okolie zvysime o 1 for(i=0; i<8; i++){ r1 = s1+p1[i]; r2 = s2+p2[i]; if(r1 >=0 && r1 < m && r2 >= 0 && r2 < n){ //sme na sachovnici if(pole[r1*m+r2]==0){ pole[r1*m+r2] = j+1; zmenilo_sa=1; //pojde to dalej } } } } } } j++; //nasleduje dalsia vlna #if VYPIS == 1 //vypis za kazdym for(i=0; i<m; i++){ for(k=0; k<n; k++){ else } } #endif } if(pole[kon1*m+kon2]==0){ } else{ } } return 0; }
--- c4.s683.cteam081.grasshop.c.0.grasshop.c +++ c4.s826.cteam081.grasshop.c.0.grasshop.c @@ -3,4 +3,5 @@ #define MAX 101*101 +#define VYPIS 0 int pole[MAX]; //ulozenie v jednom poli @@ -26,5 +27,5 @@ velkost = m*n - 1; - for(i=0; i<velkost+2; i++) {pole[i]=0;} + for(i=0; i<MAX; i++) {pole[i]=0;} //velkost+2 pole[zac1*m+zac2]=1; //zaciatok /* @@ -67,4 +68,19 @@ j++; //nasleduje dalsia vlna +#if VYPIS == 1 +printf("\nvypis pre j = %d\n",j-1); +//vypis za kazdym + for(i=0; i<m; i++){ + for(k=0; k<n; k++){ + if(i==kon1 && k == kon2) printf("%2d-", pole[i*m +k]); + else + printf("%2d ", pole[i*m +k]); + } + printf("\n"); + } +#endif + + + } @@ -75,12 +91,5 @@ printf("%d\n", pole[kon1*m+kon2]-1); } -/* - for(i=0; i<m; i++){ - for(j=0; j<n; j++){ - printf("%d ", pole[i*m +j]); - } - printf("\n"); - } -*/ + }