求帮助!!!!!!!!1找不出错误
查看原帖
求帮助!!!!!!!!1找不出错误
1080089
HardBlackPencil楼主2024/5/25 08:26

作为刚学搜索的小孩(初一) 这道题我。。。。。。 诚恳请求各位大佬们帮帮忙啊!

C++代码

#include <bits/stdc++.h>
using namespace std;
int t, n, m, a[100][100], vis[100][100], maxn = -1, sumn;
void dfs(int x, int y)
{
	if (y == m + 1)
	{
		y = 1;
		x++;
	}
	if (x == n + 1)
	{
		if (sumn > maxn)
		   maxn = sumn;
        return;
	}
	dfs(x, y + 1);
    if (vis[x][y] == 0)
    {
    	sumn += a[x][y];
    	vis[x - 1][y - 1] = 1;
    	vis[x - 1][y] = 1;
    	vis[x - 1][y + 1] = 1;
    	vis[x][y - 1] = 1;
    	vis[x][y + 1] = 1;
    	vis[x + 1][y - 1] = 1;
    	vis[x + 1][y] = 1;
    	vis[x + 1][y + 1] = 1;
    	dfs(x, y + 1);
    	vis[x - 1][y - 1] = 0;
    	vis[x - 1][y] = 0;
    	vis[x - 1][y + 1] = 0;
    	vis[x][y - 1] = 0;
    	vis[x][y + 1] = 0;
    	vis[x + 1][y - 1] = 0;
    	vis[x + 1][y] = 0;
    	vis[x + 1][y + 1] = 0;
    	sumn -= a[x][y];
	}
}
int main()
{
	cin >> t;
	for (int i = 1; i <= t; i++)
	{
		cin >> n >> m;
		memset(a, 0, sizeof(a));
		memset(vis, 0, sizeof(vis));
		for (int j = 1; j <= n; j++)
		{
			for (int k = 1; k <= m; k++)
			{
				cin >> a[j][k];
			}
		}
		dfs(1, 1);
		sumn = 0;
		cout << maxn << endl;
		maxn = -1;
	}
	return 0;
}

输出答案就有问题,一个点也没过

2024/5/25 08:26
加载中...