Go to diff to previous submission
#include <stdio.h> #include <stdlib.h> #define MAX 101 #define VYPIS 0 int pole[MAX][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, l, s1,s2, r1, r2, zmenilo_sa; //d-velkost int m, n; //rozmery int main(){ //vynulujeme pole zac1--; zac2--; kon1--; kon2--; for(i=0; i<MAX; i++){ for(j=0; j<MAX; j++) { pole[i][j]=0; } } pole[zac1][zac2]=1; //zaciatok //vlna j=1; zmenilo_sa = 1; while((pole[kon1][kon2]==0)&&(zmenilo_sa == 1)){ zmenilo_sa = 0; for(s1 = 0; s1<m; s1++){ for(s2 = 0; s2 < n; s2++){ if(pole[s1][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][r2]==0){ #if VYPIS == 1 #endif pole[r1][r2] = j+1; zmenilo_sa=1; //pojde to dalej } } } } } } #if VYPIS==1 for(k=0; k<n; k++){ for(l=0; l<m; l++) { } } #endif j++; //nasleduje dalsia vlna } if(pole[kon1][kon2]==0){ } else{ } } return 0; }
--- c4.s826.cteam081.grasshop.c.0.grasshop.c +++ c4.s1068.cteam081.grasshop.c.0.grasshop.c @@ -2,8 +2,8 @@ #include <stdlib.h> -#define MAX 101*101 +#define MAX 101 #define VYPIS 0 -int pole[MAX]; //ulozenie v jednom poli +int pole[MAX][MAX]; //ulozenie v jednom poli int p1[8]={1,2,2,1,-1,-2,-2,-1}; @@ -13,5 +13,5 @@ int kon1, kon2; -int i,j,k,velkost, s1,s2, r1, r2, zmenilo_sa; //d-velkost +int i,j,k, l, s1,s2, r1, r2, zmenilo_sa; //d-velkost int m, n; //rozmery @@ -26,19 +26,17 @@ 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]); + + for(i=0; i<MAX; i++){ + for(j=0; j<MAX; j++) { + pole[i][j]=0; } - printf("\n"); } -*/ + + pole[zac1][zac2]=1; //zaciatok + //vlna - j=1; s1 = zac1; s2=zac2; zmenilo_sa = 1; - while((pole[kon1*m+kon2]==0)&&(zmenilo_sa == 1)){ + j=1; zmenilo_sa = 1; + while((pole[kon1][kon2]==0)&&(zmenilo_sa == 1)){ zmenilo_sa = 0; @@ -46,5 +44,5 @@ for(s2 = 0; s2 < n; s2++){ - if(pole[s1*m+s2]==j){ + if(pole[s1][s2]==j){ //okolie zvysime o 1 for(i=0; i<8; i++){ @@ -55,10 +53,16 @@ if(r1 >=0 && r1 < m && r2 >= 0 && r2 < n){ //sme na sachovnici - if(pole[r1*m+r2]==0){ - pole[r1*m+r2] = j+1; + if(pole[r1][r2]==0){ + + + #if VYPIS == 1 + printf("nastavim %d %d na %d\n", r1+1, r2+1, j+1); + #endif + pole[r1][r2] = j+1; zmenilo_sa=1; //pojde to dalej } } } + } @@ -66,28 +70,30 @@ } - 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 + + #if VYPIS==1 + for(k=0; k<n; k++){ + for(l=0; l<m; l++) { + printf("%2d",pole[l][k]); + } + printf("\n"); + } + #endif - } - if(pole[kon1*m+kon2]==0){ + + + j++; + //nasleduje dalsia vlna + + + } + + if(pole[kon1][kon2]==0){ printf("impossible\n"); } else{ - printf("%d\n", pole[kon1*m+kon2]-1); + printf("%d\n", pole[kon1][kon2]-1); }