为什么会RE
  • 板块学术版
  • 楼主_Give_up_
  • 当前回复7
  • 已保存回复7
  • 发布时间2022/10/1 13:49
  • 上次更新2023/10/27 09:22:08
查看原帖
为什么会RE
516468
_Give_up_楼主2022/10/1 13:49
#include<bits/stdc++.h>

using namespace std;

int read()
{
    int x = 0,f = 1;
    char c = getchar();
    while(c<'0' || c>'9')
	{
        if(c=='-') f = -1;
        c = getchar();
    }
    while(c>='0' && c<='9')
	{
        x = (x<<3)+(x<<1)+(c^48);
        c = getchar();
    }
    return x*f;
}

int dx[5] = {1,0,-1,0},dy[5] = {0,1,0,-1};

void dfs(vector <vector <int> > a,int x,int y)
{
    int n=a.size(),m=a[0].size();
    for (int i=0;i<4;i++)
    {
        int nx = x+dx[i],ny = y+dy[i];
        if (nx>=n || ny>=m || nx<0 || ny>0 || !a[nx][ny]) continue;
        a[nx][ny] = 0;
        dfs(a,nx,ny);
    }
}

int main()
{
	int n=read(),m=read(),ans=0;
	vector <vector <int> > v;
	v.clear();
	for (int i=0;i<n;i++)
	{
		vector <int> x;
		x.clear();
		for (int j=0;j<m;j++)
		{
			int k=read();
			x.push_back(k);
		}
		v.push_back(x);
	}
    for (int i=0;i<n;i++)
    {
		for (int j=0;j<m;j++)
        {
            if (v[i][j])
            {
            	dfs(v,i,j);
            	v[i][j] = 0;
            	ans++;
            }
        }
	}
	return 0; 
}

调了一下,发现了是这坨代码的前两行RE的

for (int i=0;i<n;i++)
    {
		for (int j=0;j<m;j++)
        {
            if (v[i][j])
            {
            	dfs(v,i,j);
            	v[i][j] = 0;
            	ans++;
            }
        }
	}
2022/10/1 13:49
加载中...