求助,这个程序有个内存的问题
#include<fstream>
#include<iostream>
#include<string>
using namespace std;
ifstream fin("A-large-1.in.txt");
ofstream fout("A-large-1.out.txt");
bool isValid(const int *matrix,int n){
int N=n*n;
int* record=new int[N];
for(int j=0;j<N;j++){
record[j]=0;
}
for(int i=0;i<N;i++){
for(int j=0;j<N;j++){
record[matrix[i*N+j]-1]=1;
}
for(int j=0;j<N;j++){
if(record[j]==0){
delete []record;
return false;
}
}
for(int j=0;j<N;j++){
record[j]=0;
}
}
for(int i=0;i<N;i++){
for(int j=0;j<N;j++){
record[matrix[i+j*N]-1]=1;
}
for(int j=0;j<N;j++){
if(record[j]==0){
delete [] record;
return false;
}
}
for(int j=0;j<N;j++){
record[j]=0;
}
}
for(int i=0;i<N;i=i+n){
int k;
for(int j=0;j<n;j++){
k=i*N+j*n;
for(int m=0;m<n;m++){
for(int l=0;l<n;l++){
record[matrix[k+m*N+l]-1]=1;
}
}
for(int j=0;j<N;j++){
if(record[j]==0){
delete [] record;
return false;
}
}
for(int j=0;j<N;j++){
record[j]=0;
}
}
}
delete []record;
return true;
}
int main(){
int num;
fin>>num;
for(int i=0;i<num;i++){
cout<<i<<endl;
int n;
fin>>n;
int N=n*n;
int *matrix=new int[N*N];
for(int j=0;j<N;j++){
for(int k=0;k<N;k++){
fin>>matrix[j*N+k];
}
}
string answer;
if(isValid(matrix,n)){
answer="Yes";
}else{
answer="No";
}
fout<<"Case #"<<(i+1)<<": "<<answer<<endl;
delete [] matrix;
}
}