|
|
вернуться в форумWhere is my mistake?????? Послано Sega 31 июл 2003 12:26 This is my program: #include<iostream.h> int **a; int main() { int n,i,j,f=0; char c; cin >> n; cin.get(c); a=new int* [n+2]; a[0]=new int [n+2]; a[n+1]=new int [n+2]; for (i=1; i<=n; i++) { a[i]=new int [n+2]; for (j=1; j<=n; j++) { cin.get(c); while ((c!='.')&&(c!='#')) cin.get(c); if (c=='.') a[i][j]=0; else a[i][j]=1; } cin.get(c); } for (i=0; i<=n+1; i++) { a[0][i]=1; a[n+1][i]=1; a[i][0]=1; a[i][n+1]=1; } int state=1; long len=-3; i=1; j=1; while ((i!=1)||(j!=1)||(state!=4)) { if ((i==n)&&(j==n)) f=1; if (state==1) { if (a[i-1][j]) { len++; if (a[i][j+1]) state=2; else j++; } else {state=4; i--;} } else if (state==2) { if (a[i][j+1]) { len++; if (a[i+1][j]) state=3; else i++; } else {state=1; j++;} } else if (state==3) { if (a[i+1][j]) { len++; if (a[i][j-1]) state=4; else j--; } else {state=2; i++;} } else { if (a[i][j-1]) { len++; if (a[i-1][j]) state=1; else i--; } else {state=3; j--;} } } if (!f) { i=n; j=n; state=3; len++; while ((i!=n)||(j!=n)||(state!=2)) { if ((i==n)&&(j==n)) f=1; if (state==1) { if (a[i-1][j]) { len++; if (a[i][j+1]) state=2; else j++; } else {state=4; i--;} } else if (state==2) { if (a[i][j+1]) { len++; if (a[i+1][j]) state=3; else i++; } else {state=1; j++;} } else if (state==3) { if (a[i+1][j]) { len++; if (a[i][j-1]) state=4; else j--; } else {state=2; i++;} } else { if (a[i][j-1]) { len++; if (a[i-1][j]) state=1; else i--; } else {state=3; j--;} } } } cout << 9*len; return 0; } I check my program on all tests on forum, it works right! If somebody can help me, show me my mistake, please. Beforehand thanks. Did you think about the area can't be got thought from the "Entrance" to the "Exit"?(-) |
|
|