为什么下面的代码修改m和n的值一大就报错
ailed to execute "C:\Users\Administrator\Desktop\未命名4.exe":Error 0: 操作成功完成。
了呀
有没da lao解释一下哪里错了
#include<bits/stdc++.h>
using namespace std;
//迷宫大小(必须奇数)
#define m 11
#define n 11
//构成
#define player '!'
#define wall '#'
#define kong ' '
//起点(必须偶数且在迷宫边缘)
#define X 2
#define Y 2
//迷宫内
#define WALL -1
#define KONG 2
struct play_er{int x,y;}start;
int dt[1010][1010];
int fx[5][5]={{2,0},{-2,0},{0,2},{0,-2}};
int zj[5][5]={{1,0},{-1,0},{0,1},{0,-1}};
bool v[1010][1010]={0};
void init()
{
start.x=X,start.y=Y;
memset(dt,WALL,sizeof dt);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(i==1||i==n||j==1||j==m) dt[i][j]=WALL;
if(i%2==0&&j%2==0) dt[i][j]=KONG;
else dt[i][j]=WALL;
}
}
dt[X][Y]=KONG;
}
void dfs(int x,int y)
{
bool f[5]={0};
while(1)
{
if(f[0]&&f[1]&&f[2]&&f[3]) return ;
int r=rand()%4;
int nx=fx[r][0],ny=fx[r][1],zx=zj[r][0],zy=zj[r][1];
if(x+nx<1||x+nx>n||y+ny<1||y+ny>m) {f[r]=1;continue;}//return ;
if(dt[x+zx][y+zy]!=WALL||v[x+zx][y+zy]||v[x+nx][y+ny]) {f[r]=1;continue;}//return ;
f[r]=1;
dt[x+zx][y+zy]=KONG;
v[x+zx][y+zy]=v[x+nx][y+ny]=1;
dfs(x+nx,y+ny);
}
return ;
}
int main()
{
init();
srand(time(NULL));
dfs(X,Y);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(i==start.x&&j==start.y) printf("%c",player);
else if(dt[i][j]==KONG) printf("%c",kong);
else printf("%c",wall);
}
printf("\n");
}
return 0;
}