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

📄 ttwo.cpp

📁 USACO chapter two.Useful for beginners.
💻 CPP
字号:
/*
ID: chenkai4
PROG: ttwo
LANG: C++
*/


#include <iostream>
using namespace std;

class point
{
public:
	int x,y,direc;
};

bool hash[11][11][11][11][4][4];

bool map[12][12];

point fp,cp;

void go(point* pt)
{
	if(pt->direc==1)
		if(pt->y==1||map[pt->x][pt->y-1])
			pt->direc=2;
		else
			pt->y--;
	else if(pt->direc==2)
		if(pt->x==10||map[pt->x+1][pt->y])
			pt->direc=3;
		else
			pt->x++;
	else if(pt->direc==3)
		if(pt->y==10||map[pt->x][pt->y+1])
			pt->direc=0;
		else
			pt->y++;
	else
		if(pt->x==1||map[pt->x-1][pt->y])
			pt->direc=1;
		else
			pt->x--;
}

int main()
{
	freopen("ttwo.in","r",stdin);
	freopen("ttwo.out","w",stdout);
	char ch;
	for(int a=1;a<=10;a++)
		for(int b=1;b<=10;b++)
		{
			scanf("%c",&ch);
			if(ch=='\n')
				scanf("%c",&ch);
			if(ch=='*')
				map[b][a]=true;
			else if(ch=='F')
			{fp.x = b;fp.y = a;fp.direc = 1;}
			else if(ch=='C')
			{cp.x = b;cp.y = a;cp.direc = 1;}
		}
	int answer=0;
	hash[fp.x][fp.y][cp.x][cp.y][fp.direc][cp.direc]=true;
	while(true)
	{
		if(fp.x==cp.x&&fp.y==cp.y)
			break;
		else
		{
			go(&fp);go(&cp);
			if(hash[fp.x][fp.y][cp.x][cp.y][fp.direc][cp.direc])
			{printf("0\n");return 0;}
			else
			{
				answer++;
				hash[fp.x][fp.y][cp.x][cp.y][fp.direc][cp.direc]=true;
			}
		}
	}
	printf("%d\n",answer);
	return 0;
}

⌨️ 快捷键说明

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