为什么这个变量的定义放在主函数外面就编译失败?
  • 板块学术版
  • 楼主水星湖psgqwq
  • 当前回复5
  • 已保存回复5
  • 发布时间2023/8/29 11:08
  • 上次更新2023/11/3 00:34:12
查看原帖
为什么这个变量的定义放在主函数外面就编译失败?
974277
水星湖psgqwq楼主2023/8/29 11:08
#include<bits/stdc++.h>
using namespace std;
int n,m,x1,len1,x2,y2,len2;
int y1;
int v[805][805];
bool f[805][805];//是否算过
int main()
{
    
    cin>>n>>m;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            cin>>v[i][j];
    int q;
    cin>>q;
    while(q--)
    {
        cin>>x1>>y1>>len1>>x2>>y2>>len2;
        memset(f,0,sizeof(f));
        long long sum=0;
        for(int i=x1;i<=x1+len1-1;i++)
            for(int j=y1;j<=y1+len1-1;j++)
            {
                f[i][j]++;
                sum += v[i][j];
                // cout<<sum<<endl;
            }
        for(int i=x2;i<=x2+len2-1;i++)
            for(int j=y2;j<=y2+len2-1;j++)
            {
                if(!f[i][j])
                    sum += v[i][j];
            }
        cout<<sum<<endl;
    }
    return 0;
}

上面是编译过不了的代码

#include<bits/stdc++.h>
using namespace std;
int n,m,x1,len1,x2,y2,len2;
// int y1;
int v[805][805];
bool f[805][805];//是否算过
int main()
{
    int y1;
    cin>>n>>m;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            cin>>v[i][j];
    int q;
    cin>>q;
    while(q--)
    {
        cin>>x1>>y1>>len1>>x2>>y2>>len2;
        memset(f,0,sizeof(f));
        long long sum=0;
        for(int i=x1;i<=x1+len1-1;i++)
            for(int j=y1;j<=y1+len1-1;j++)
            {
                f[i][j]++;
                sum += v[i][j];
                // cout<<sum<<endl;
            }
        for(int i=x2;i<=x2+len2-1;i++)
            for(int j=y2;j<=y2+len2-1;j++)
            {
                if(!f[i][j])
                    sum += v[i][j];
            }
        cout<<sum<<endl;
    }
    return 0;
}

把y1放到主函数里就能编译过了

2023/8/29 11:08
加载中...