天梯赛的善良出不来结果,求看看代码哪里有问题

img


#include<iostream>
using namespace std;
int main(){
      int N,i,j,a[10][10];
      cin>>N;
      for(i=0;i<2*N;i++){
            for(j=0;j<2*N;j++){
                  cin>>a[i][j];
            }
      }
      int x1,y1,x2,y2;
      int flag=0,p=0,q=0;
      int K;
      cin>>K;
      for(i=0;i<K;i++){
            cin>>x1>>y1>>x2>>y2;
            if(flag){
            cout<<"Game over"<<endl;
                  break;
            }
            else if(a[x1-1][y1-1]==a[x2-1][y2-1]&&a[x1-1][y1-1]!='*'){
                  p++;
                  if(p==2*N*N){
                        cout<<"Congratulations!"<<endl;
                        break;
                  }
            else{
                 a[x1-1][y1-1]=a[x2-1][y2-1]='*';
                 for(i=0;i<2*N;i++){
                     for(j=0;j<2*N;j++){
                         cout<<a[i][j];
                     }
                     cout<<" ";
                 }
            }
            }
            else{
                 q++;
                 cout<<"Uh-oh"<<endl;
                 if(q==3){
                     flag=1;
                  }
            }
      }
      return 0;
}

请教一下这份代码是哪里有问题吗?我自己觉得逻辑上是可以的,但是出不来结果,求指教

你a是int数组不是字符数组?