Source code for submission s826

Go to diff to previous submission

grasshop.c

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define MAX 101*101
  5. #define VYPIS 0
  6.  
  7. int pole[MAX]; //ulozenie v jednom poli
  8.  
  9. int p1[8]={1,2,2,1,-1,-2,-2,-1};
  10. int p2[8]={2,1,-1,-2,-2,-1,1,2};
  11.  
  12. int zac1, zac2;
  13. int kon1, kon2;
  14.  
  15. int i,j,k,velkost, s1,s2, r1, r2, zmenilo_sa; //d-velkost
  16. int m, n; //rozmery
  17.  
  18. int main(){
  19.  
  20. while(scanf("%d %d %d %d %d %d", &m, &n, &zac1, &zac2, &kon1, &kon2)==6){
  21. //vynulujeme pole
  22.  
  23. zac1--;
  24. zac2--;
  25. kon1--;
  26. kon2--;
  27.  
  28. velkost = m*n - 1;
  29. for(i=0; i<MAX; i++) {pole[i]=0;} //velkost+2
  30. pole[zac1*m+zac2]=1; //zaciatok
  31. /*
  32. for(i=0; i<m; i++){
  33. for(j=0; j<n; j++){
  34. printf("%d ", pole[i*m +j]);
  35. }
  36. printf("\n");
  37. }
  38. */
  39.  
  40. //vlna
  41. j=1; s1 = zac1; s2=zac2; zmenilo_sa = 1;
  42. while((pole[kon1*m+kon2]==0)&&(zmenilo_sa == 1)){
  43. zmenilo_sa = 0;
  44.  
  45. for(s1 = 0; s1<m; s1++){
  46. for(s2 = 0; s2 < n; s2++){
  47.  
  48. if(pole[s1*m+s2]==j){
  49. //okolie zvysime o 1
  50. for(i=0; i<8; i++){
  51.  
  52. r1 = s1+p1[i];
  53. r2 = s2+p2[i];
  54.  
  55. if(r1 >=0 && r1 < m && r2 >= 0 && r2 < n){
  56. //sme na sachovnici
  57. if(pole[r1*m+r2]==0){
  58. pole[r1*m+r2] = j+1;
  59. zmenilo_sa=1; //pojde to dalej
  60. }
  61. }
  62. }
  63. }
  64.  
  65. }
  66.  
  67. }
  68. j++;
  69. //nasleduje dalsia vlna
  70. #if VYPIS == 1
  71. printf("\nvypis pre j = %d\n",j-1);
  72. //vypis za kazdym
  73. for(i=0; i<m; i++){
  74. for(k=0; k<n; k++){
  75. if(i==kon1 && k == kon2) printf("%2d-", pole[i*m +k]);
  76. else
  77. printf("%2d ", pole[i*m +k]);
  78. }
  79. printf("\n");
  80. }
  81. #endif
  82.  
  83.  
  84.  
  85. }
  86.  
  87. if(pole[kon1*m+kon2]==0){
  88. printf("impossible\n");
  89. }
  90. else{
  91. printf("%d\n", pole[kon1*m+kon2]-1);
  92. }
  93.  
  94. }
  95.  
  96.  
  97. return 0;
  98.  
  99. }
  100.  

Diff to submission s683

grasshop.c

--- 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");
-        }
-*/
+
 }