求调,悬一关
查看原帖
求调,悬一关
735165
chenxi797楼主2025/7/26 20:24
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int INF = 2147483647;
char a[105][105];
char dir[10] = {' ','E','N','S','W'};
int n,m,sum;
int dfs(int x,int y)
{
	sum++;
	cout << x << ' ' << y << endl;
	if (a[x][y] == '.' || a[x][y] == 'o') return INF;
	if (a[x][y] == 'x') return sum;
	if (a[x][y] == '>') sum += dfs(x + 1,y);
	if (a[x][y] == '^') sum += dfs(x,y + 1);
	if (a[x][y] == 'v') sum += dfs(x,y - 1);
	if (a[x][y] == '<') sum += dfs(x - 1,y);
	return sum;
}
signed main()
{
	cin >> n >> m;
	int startx,starty;
	for (int i = 1;i <= n;i++)
	{
		for (int j = 1;j <= m;j++)
		{
			cin >> a[i][j];
			if (a[i][j] == 'o') startx = i,starty = j;
		}
	}
	int mins = INF,mini = 0,s;
	for (int i = 1;i <= 4;i++)
	{
		sum = 0;
		if (i == 1) s = dfs(startx + 1,starty);
		if (i == 2) s = dfs(startx,starty + 1);
		if (i == 3) s = dfs(startx,starty - 1);
		if (i == 4) s = dfs(startx - 1,starty);
		if (s < mins) mins = s,mini = i;
	}
	if (mini) cout << ":)" << endl << dir[mini];
	else cout << ":(";
	return 0;
}

怎么办啊我连橙题都做不出来了

2025/7/26 20:24
加载中...