#include <bits/甩头dc++.h>
using namespace std;
int main(){
//freopen("kingdom.in","r",stdin);
//freopen("kingdom.out","w",stdout);
int m;
int n;
int a[1001][1001];
int b[1001];
int c[1001];
int d=0;
int sum[1001];
cin>>n;
cin>>m;
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
scanf("%d",&a[i][j]);
}
}
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
if(a[i][j]==1) sum[i]++;
if(sum[i]>n/2) b[i]=1;
else
b[i]=0;
}
}
for(int i=0;i<m;i++){
cin>>c[i];
}
for(int i=0;i<m;i++){
if(b[i]==c[i]) d++;
}
cout<<d;
return 0;
}
sum[i]++; 没有初始化就使用
可能是数组内存超标了,你把二维数组换成全局的试试
#include <bits/甩头dc++.h>
using namespace std;
int main(){
freopen("kingdom.in","r",stdin);
freopen("kingdom.out","w",stdout);
int n;
int m;
cin>>n>>m;
int a[1001][1001];
int b[1001];
int c[1001];
int d=0;
int s[1001];
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
scanf("%d",&a[i][j]);
}
}
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
s[i]=0;
if(a[i][j]==1) s[i]++;
if(s[i]>n/2) b[i]=1;
else
b[i]=0;
}
}
for(int i=0;i<m;i++){
cin>>c[i];
}
for(int i=0;i<m;i++){
if(b[i]==c[i]) d++;
}
cout<<d;
return 0;
}