编写暴力程序为啥错了

#include<bits/stdc++.h>
using namespace std;
int n,m,sum;
int a[105][105];
char p[105];
int main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        scanf("%s",&p);
        for(int j=0;j<m;j++) a[i][j]=p[j]-'0';
    }
    for(int i=1;i<=n;i++){
        for(int j=0;j<m;j++){
            if(!a[i][j]) continue;
            if(i==1){
                if(j==0||j==m-1){sum++;continue;}
                if(a[i][j-1]&&a[i][j+1]&&a[i+1][j])
                    sum++;
                continue;
            }
            if(i==n){
                if(j==0||j==m-1){sum++;continue;}
                if(a[i][j-1]&&a[i][j+1]&&a[i-1][j])
                    sum++;
                continue;
            }
            if(j==0){
                if(i==1||i==n){sum++;continue;}
                if(a[i][j+1]&&a[i+1][j]&&a[i-1][j])
                    sum++;
                continue;
            }
            if(j==m-1){
                if(i==1||i==n){sum++;continue;}
                if(a[i][j-1]&&a[i+1][j]&&a[i-1][j])
                    sum++;
                continue;
            }
            if(a[i-1][j]&&a[i+1][j]&&a[i][j+1]&&a[i][j-1])
                sum++;
        }
    }
    cout<<sum;
    return 0;
}

https://www.luogu.com.cn/problem/P1451