Source code for submission s1068

Go to diff to previous submission

grasshop.c

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. #define MAX 101
  5. #define VYPIS 0
  6.  
  7. int pole[MAX][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, l, 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.  
  29. for(i=0; i<MAX; i++){
  30. for(j=0; j<MAX; j++) {
  31. pole[i][j]=0;
  32. }
  33. }
  34.  
  35. pole[zac1][zac2]=1; //zaciatok
  36.  
  37.  
  38. //vlna
  39. j=1; zmenilo_sa = 1;
  40. while((pole[kon1][kon2]==0)&&(zmenilo_sa == 1)){
  41. zmenilo_sa = 0;
  42.  
  43. for(s1 = 0; s1<m; s1++){
  44. for(s2 = 0; s2 < n; s2++){
  45.  
  46. if(pole[s1][s2]==j){
  47. //okolie zvysime o 1
  48. for(i=0; i<8; i++){
  49.  
  50. r1 = s1+p1[i];
  51. r2 = s2+p2[i];
  52.  
  53. if(r1 >=0 && r1 < m && r2 >= 0 && r2 < n){
  54. //sme na sachovnici
  55. if(pole[r1][r2]==0){
  56.  
  57.  
  58. #if VYPIS == 1
  59. printf("nastavim %d %d na %d\n", r1+1, r2+1, j+1);
  60. #endif
  61. pole[r1][r2] = j+1;
  62. zmenilo_sa=1; //pojde to dalej
  63. }
  64. }
  65. }
  66.  
  67. }
  68.  
  69. }
  70.  
  71. }
  72.  
  73. #if VYPIS==1
  74.  
  75. for(k=0; k<n; k++){
  76. for(l=0; l<m; l++) {
  77. printf("%2d",pole[l][k]);
  78. }
  79. printf("\n");
  80. }
  81.  
  82. #endif
  83.  
  84.  
  85.  
  86.  
  87. j++;
  88. //nasleduje dalsia vlna
  89.  
  90.  
  91. }
  92.  
  93. if(pole[kon1][kon2]==0){
  94. printf("impossible\n");
  95. }
  96. else{
  97. printf("%d\n", pole[kon1][kon2]-1);
  98. }
  99.  
  100. }
  101.  
  102.  
  103. return 0;
  104.  
  105. }
  106.  

Diff to submission s826

grasshop.c

--- 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);     
         }