记录编号 75133 评测结果 AAAAAAAAA
题目名称 [USACO 2.4]两只塔姆沃斯牛 最终得分 100
用户昵称 Gravatardigital-T 是否通过 通过
代码语言 C++ 运行时间 0.004 s
提交时间 2013-10-27 11:14:25 内存使用 0.81 MiB
显示代码纯文本
  1. #include<fstream>
  2. #include<cstring>
  3. #include<string>
  4. using namespace std;
  5. ifstream fi("ttwo.in");
  6. ofstream fo("ttwo.out");
  7. const int N=10;
  8. const int dx[5]={0,-1,0,1,0},dy[5]={0,0,1,0,-1};//1->北 2->东 3->南 4->西
  9. char Map[12][12];
  10. bool boo[12][12][5][12][12][5];
  11. int Fx,Fy,Fd,Cx,Cy,Cd;// x,y坐标 d(direction)方位
  12. void Move(int &x,int &y,int &d)
  13. {
  14. if(Map[x+dx[d]][y+dy[d]]=='.')
  15. x+=dx[d],y+=dy[d];
  16. else
  17. d=(d%4)+1;
  18. }
  19. int main()
  20. {
  21. int i,j;
  22. for(i=0;i<=N+1;i++)Map[0][i]=Map[i][0]=Map[i][N+1]=Map[N+1][i]='*';
  23. for(i=1;i<=N;i++)
  24. for(j=1;j<=N;j++)
  25. {
  26. fi>>Map[i][j];
  27. if(Map[i][j]=='F')
  28. Map[i][j]='.',Fx=i,Fy=j,Fd=1;
  29. if(Map[i][j]=='C')
  30. Map[i][j]='.',Cx=i,Cy=j,Cd=1;
  31. }
  32. /*for(i=0;i<=N+1;i++)
  33. {
  34. for(j=0;j<=N+1;j++)
  35. fo<<Map[i][j]<<' ';
  36. fo<<endl;
  37. }*/
  38. memset(boo,true,sizeof(boo));
  39. int step=0;
  40. if(Fx==Cx&&Fy==Cy){fo<<step<<endl;return 0;}
  41. while(boo[Fx][Fy][Fd][Cx][Cy][Cd])
  42. {
  43. step++;
  44. boo[Fx][Fy][Fd][Cx][Cy][Cd]=false;
  45. Move(Fx,Fy,Fd);Move(Cx,Cy,Cd);
  46. //fo<<Fx<<' '<<Fy<<' '<<Fd<<" "<<Cx<<' '<<Cy<<' '<<Cd<<endl;
  47. if(Fx==Cx&&Fy==Cy){fo<<step<<endl;return 0;}
  48. }
  49. //fo<<step<<endl;
  50. fo<<0<<endl;
  51. return 0;
  52. }