我试图在这里解决问题-https://www.codechef.com/APRIL19B/problems/FENCE并将数组初始化为0,但是当我尝试使用n = 4和m = 4访问arr [0] [4]的值时,它将打印垃圾值。
我尝试使用矢量进行初始化,因为我在数组的初始化中犯了一些错误,它适用于示例测试用例,但仍然会产生分段错误。
这是我的代码-
#include<bits/stdc++.h>
#include <iostream>
using namespace std;
int main() {
// your code goes here
int t;
cin>>t;
while(t--){
long long n,m,k,res=0;
cin>>n>>m>>k;
//vector<vector<long long>> arr(n+2,vector<long long>(m+2,0));
long long arr[n+2][m+2]={0};
long long vec[k][k];
for(unsigned int it=0;it<k;it++){
int t1,t2;
cin>>t1>>t2;
arr[t1][t2]=1;
vec[it][0]=t1;
vec[it][1]=t2;
}
cout<<"values:"<<arr[1][4]<<endl;
for(unsigned int itr =0;itr<k;itr++){
int j = vec[itr][0];
int i = vec[itr][1];
//cout<<i<<" "<<j<<endl;
res+=4-(arr[i-1][j]+arr[i+1][j]+arr[i][j-1]+arr[i][j+1]);
}
cout<<res<<endl;
}
return 0;
}
编辑: 样本输入为:
Example Input
2
4 4 9
1 4
2 1
2 2
2 3
3 1
3 3
4 1
4 2
4 3
4 4 1
1 1
Example Output
20
4
约束:
1≤T≤10
1≤N,M≤10^9
1≤K≤10^5
1≤r≤N
1≤c≤M
the cells containing plants are pairwise distinct
我希望第一个测试用例的输出为20,但会得到垃圾值。
答案 0 :(得分:0)
当declaring an array in C++时,其大小必须为constant expression-即,必须在编译时知道其大小。您的编译器应该抱怨这些行,因为m
,n
和k
在编译时未初始化(更正确地说,是初始化为不确定的值):
long long arr[n+2][m+2]={0};
long long vec[k][k];
答案 1 :(得分:0)
我认为数组超出了arr [i-1] [j]或arr [i + 1] [j]或arr [i] [j + 1]或arr [i] [j- 1]为什么会出现错误。