Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
Re:>>奇怪!!Memory有负值为-552k,Time为0ms,返回结果且为Time Limit Exceed.In Reply To:>>奇怪!!Memory有负值为-552k,Time为0ms,返回结果且为Time Limit Exceed. Posted by:kingway at 2004-04-17 11:28:40 > Source > > Problem Id:1103 User Id:kingway > Memory:-552K Time:0MS > Language:C++ Result:Time Limit Exceed > > Source > > #include <stdio.h> > #include <iostream.h> > > int i, j, len, longest, w, h, dir, num, dir1; > int a[75][75], b[75][75]; > > int I(int i, int dir); > int J(int j, int dir); > int Search(int i1, int j1); > int main() > { > int n, dir2; > char ch; > for (n=1; 1; n++) > { > cin>>w>>h; > if (w==0 && h==0) > break; > for (i=0; i<h; i++) > { > for (j=0; j<w; j++) > { > cin>>ch; > a[i][j] = ch=='/' ? 5:3; > b[i][j] = 0; > } > } > num = 0; > longest = 0; > for (i=0; i<h; i++) > { > for (dir=1, j=0; j<w; j+=w-1, dir=3) > { > if (b[i][j]!=2) > { > len = 0; > if (b[i][j]==0) > dir2 = dir; > else > { > if (a[i][j]==3) > dir2 = b[i][j]; > else > dir2 = b[i][j]==1 ? 3:1; > } > if (dir2 == dir) > { > dir1 = dir; > // cout<<"\nstart: "<<i<<" * "<<j<<" "<<dir<<endl; > Search(i, j); > } > } > } > } > for (j=0; j<w; j++) > { > for (dir=2, i=0; i<h; i+=h-1, dir=4) > { > if (b[i][j]!=2) > { > len = 0; > if (b[i][j]==0) > dir2 = dir; > else > { > if (a[i][j]==3) > dir2 = b[i][j]; > else > dir2 = b[i][j]==1 ? 3:1; > } > if (dir == dir2) > { > dir1 = dir; > // cout<<"\nstart: "<<i<<" & "<<j<<" "<<dir<<endl; > Search(i, j); > } > } > } > } > for (i=0; i<h; i++) > { > for (j=0; j<w; j++) > { > if (b[i][j]!=2) > { > len = 0; > if (a[i][j]==3) > dir = b[i][j]; > else > dir = b[i][j]==1 ? 3:1; > dir1 = dir; > // cout<<"\nstart: "<<i<<" ^ "<<j<<" "<<dir<<endl; > Search(i, j); > } > } > } > cout<<"Maze #"<<n<<":\n"; > if (num!=0) > { > cout<<num; > if (num == 1) > cout<<" Cycle;"; > else > cout<<" Cycles;"; > cout<<" the longest has length "<<longest<<".\n"; > } > else > cout<<"There are no cycles.\n"; > } > return 0; > } > > int I(int i, int dir) > { > switch (dir) > { > case 2: i++; break; > case 4: i--; break; > } > return i; > } > > int J(int j, int dir) > { > switch (dir) > { > case 1: j++; break; > case 3: j--; break; > } > return j; > } > > int Search(int i1, int j1) > { > while (i1>=0 && i1<h && j1>=0 && j1<w) > { > if (a[i1][j1]==3) > { > if (b[i1][j1]==0) > b[i1][j1] = (dir ==1 || dir == 4) ? 3:1; > else > b[i1][j1] = 2; > dir = (dir + 4) >= 7 ? (7 - dir):(3 - dir); > i1 = I(i1, dir); > j1 = J(j1, dir); > } > else > { > if (b[i1][j1]==0) > b[i1][j1] = (dir == 1 || dir == 2) ? 1:3; > else > b[i1][j1] = 2; > dir = 5 - dir; > i1 = I(i1, dir); > j1 = J(j1, dir); > } > // cout<<i1<<" "<<j1<<" "<<dir<<endl; > len++; > if (i1==i && j1==j && dir1 == dir) > { > num++; > // cout<<"cycle"<<endl; > if (longest < len) > longest = len; > return 1; > } > } > // cout<<"not cycle"<<endl; > return 0; > } > Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator