⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usaco_ttwo.cpp

📁 usaco自己做的1到5章的代码
💻 CPP
字号:
/*
ID: wangyuc2
PROG: ttwo
LANG: C++
*/
#include <fstream>
#include <iostream>
#include <cstring>
#include <memory>
#include <queue>

using namespace std;
ifstream fin("ttwo.in");
ofstream fout("ttwo.out");
struct Point{
       int x,y;
       int dir;
       };

int main()
{   int maze[12][12];
    int i,j,step;
    Point farm_now,cow_now,now;
    Point d[4]={{-1,0,1},{0,1,1},{1,0,1},{0,-1,-3}};
    char ch;
    bool check[401][401];
	for(i=0;i<401;i++) memset(check[i],false,sizeof(check[i]));
  //  int farmer,cow;
    for(i=0;i<12;i++)
    for(j=0;j<12;j++)
    {
        if(i==0 || j==0 ||i==11 || j==11) maze[i][j]=-1;
        else maze[i][j]=0;
    }
    for(i=1;i<11;i++)
       for(j=1;j<11;j++)
       {
           fin>>ch;
           if(ch == '*') maze[i][j]=-1;
           else if(ch == 'F') {farm_now.x=i;farm_now.y=j; farm_now.dir=0;}
           else if(ch == 'C') {cow_now.x=i;cow_now.y=j;cow_now.dir=0;}
       }
  //  dir=0; 
    step=0;
    now.x=farm_now.dir*100+((farm_now.x-1)*10+farm_now.y);
    now.y=cow_now.dir*100+((cow_now.x-1)*10+cow_now.y);
    bool flag=false;
	
    while(!check[now.x][now.y] || ch==2)
    {
        
		ch=0;
        check[now.x][now.y]=true;
        if(now.x%100 == now.y%100) {flag=true; break;}
		step++;		
        if(maze[farm_now.x+d[farm_now.dir].x][farm_now.y+d[farm_now.dir].y] != -1)
        {
            farm_now.x+=d[farm_now.dir].x;
            farm_now.y+=d[farm_now.dir].y;
        }
        else {
            if(maze[farm_now.x+d[farm_now.dir].x][farm_now.y+d[farm_now.dir].y]==-1)
            {
                farm_now.dir+=d[farm_now.dir].dir;
				ch++;
			//	break;
            }
           // farm_now.x+=d[farm_now.dir].x;
           // farm_now.y+=d[farm_now.dir].y;
        }
        if(maze[cow_now.x+d[cow_now.dir].x][cow_now.y+d[cow_now.dir].y] != -1)
        {
            cow_now.x+=d[cow_now.dir].x;
            cow_now.y+=d[cow_now.dir].y;
        }
        else {
            if(maze[cow_now.x+d[cow_now.dir].x][cow_now.y+d[cow_now.dir].y]==-1)
            {
                cow_now.dir+=d[cow_now.dir].dir;
				ch++;
            }
            // cow_now.x+=d[cow_now.dir].x;
            // cow_now.y+=d[cow_now.dir].y;
        }
        now.x=farm_now.dir*100+((farm_now.x-1)*10+farm_now.y);
        now.y=cow_now.dir*100+((cow_now.x-1)*10+cow_now.y);
    }
    if(flag) fout<<step<<endl;
    else fout<<'0'<<endl;
  //  system("PAUSE");
    return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -