求助,来来回回调了2天,33分
查看原帖
求助,来来回回调了2天,33分
636442
yangyang1000楼主2022/12/27 11:41

一直33分,不知道什么智障问题犯了,只能说自己习惯不好

#include<iostream>
using namespace std;

char mp[15][15];
int vis[15][15][15][15];
int cowx,cowy,fjx,fjy,cowpos,fjpos;

int main()
{
	for(int i=0;i<=11;i++)
	{
		mp[0][i] = '*';
		mp[11][i] = '*';
		mp[i][0] = '*';
		mp[i][11] = '*';
	}
	for(int i=1;i<=10;i++)
		for(int j=1;j<=10;j++)
		{
			cin >> mp[i][j];
			if(mp[i][j] == 'C')
			{
				cowx = i,cowy = j;
			}
			
			if(mp[i][j] == 'F')
			{
				fjx = i,fjy = j;
			}
		}
	
	vis[cowx][cowy][fjx][fjy] = 1;
	cowpos = 1;
	fjpos = 1;
	
	int t = 0;
	while(cowx != fjx || cowy != fjy)
	{
		t++;
		//cow移动 
		if(cowpos == 1) 
		{
			if(mp[cowx-1][cowy] != '*') cowx--;
			else cowpos++;
		}
		if(cowpos == 2) 
		{
			if(mp[cowx][cowy+1] != '*') cowy++;
			else cowpos++;
		}
		if(cowpos == 3) 
		{
			if(mp[cowx+1][cowy] != '*') cowx++;
			else cowpos++;
		}
		if(cowpos == 4) 
		{
			if(mp[cowx][cowy-1] != '*') cowy--;
			else cowpos = 1;
		}
		
		//cow移动
		if(fjpos == 1) 
		{
			if(mp[fjx-1][fjy] != '*') fjx--;
			else fjpos++;
		}
		if(fjpos == 2) 
		{
			if(mp[fjx][fjy+1] != '*') fjy++;
			else fjpos++;
		}
		if(fjpos == 3) 
		{
			if(mp[fjx+1][fjy] != '*') fjx++;
			else fjpos++;
		}
		if(fjpos == 4) 
		{
			if(mp[fjx][fjy-1] != '*') fjy--;
			else fjpos = 1;
		}
		
		vis[cowx][cowy][fjx][fjy]++;
		if(vis[cowx][cowy][fjx][fjy] > 4)
		{
			cout << "0";
			return 0;
		}
	}
	cout << t;
	return 0;
}
2022/12/27 11:41
加载中...