主题:各位大挟 帮帮忙把 急!关于扫雷的问题啊 (高分请教)
我现在用cb做扫雷
现在做到 递归 老是有错误 不知道 错误在哪里啊 帮我看看可以吗
其中 等于零的是表示空格,等于-1是雷
m 为行 s列
void __fastcall TFrm_S::dj(int u,int p)
{
if (a[u][p]!=-1&&a[u][p]!=0)
{
if (a[u][p]==1)
{
j1((p+1)*16,(u+4)*16);
}
if (a[u][p]==2)
{
j2((p+1)*16,(u+4)*16);
}
if (a[u][p]==3)
{
j3((p+1)*16,(u+4)*16);
}
if (a[u][p]==4)
{
j4((p+1)*16,(u+4)*16);
}
if (a[u][p]==5)
{
j5((p+1)*16,(u+4)*16);
}
}
else
{
if(a[u][p]==0)
{
if((a[u-1][p-1]!=-1)&&(u-1>=0)&&(p-1>=0))
dj(u-1,p-1);
if((a[u-1][p]!=-1)&&(u-1>=0))
dj(u-1,p);
if((a[u-1][p+1]!=-1)&&(u-1>=0)&&(p+1<=s-1))
dj(u-1,p+1); // s
if((a[u][p-1]!=-1)&&(p-1>=0))
dj(u,p-1);
if((a[u][p+1]!=-1)&&(p+1<=s-1))
dj(u,p+1); // s
if((a[u+1][p-1]!=-1)&&(u+1<=m-1)&&(p-1>=0))
dj(u+1,p-1); // m
if((a[u+1][p]!=-1)&&(u+1<=m-1))
dj(u+1,p); // m
if((a[u+1][p+1]!=-1)&&(u+1<=m-1)&&(p+1<=s-1))
dj(u+1,p+1); // m s
}
}
}
好像是else 语句后面有问题 可是我看着里面没错误啊
请大家帮帮忙把
现在做到 递归 老是有错误 不知道 错误在哪里啊 帮我看看可以吗
其中 等于零的是表示空格,等于-1是雷
m 为行 s列
void __fastcall TFrm_S::dj(int u,int p)
{
if (a[u][p]!=-1&&a[u][p]!=0)
{
if (a[u][p]==1)
{
j1((p+1)*16,(u+4)*16);
}
if (a[u][p]==2)
{
j2((p+1)*16,(u+4)*16);
}
if (a[u][p]==3)
{
j3((p+1)*16,(u+4)*16);
}
if (a[u][p]==4)
{
j4((p+1)*16,(u+4)*16);
}
if (a[u][p]==5)
{
j5((p+1)*16,(u+4)*16);
}
}
else
{
if(a[u][p]==0)
{
if((a[u-1][p-1]!=-1)&&(u-1>=0)&&(p-1>=0))
dj(u-1,p-1);
if((a[u-1][p]!=-1)&&(u-1>=0))
dj(u-1,p);
if((a[u-1][p+1]!=-1)&&(u-1>=0)&&(p+1<=s-1))
dj(u-1,p+1); // s
if((a[u][p-1]!=-1)&&(p-1>=0))
dj(u,p-1);
if((a[u][p+1]!=-1)&&(p+1<=s-1))
dj(u,p+1); // s
if((a[u+1][p-1]!=-1)&&(u+1<=m-1)&&(p-1>=0))
dj(u+1,p-1); // m
if((a[u+1][p]!=-1)&&(u+1<=m-1))
dj(u+1,p); // m
if((a[u+1][p+1]!=-1)&&(u+1<=m-1)&&(p+1<=s-1))
dj(u+1,p+1); // m s
}
}
}
好像是else 语句后面有问题 可是我看着里面没错误啊
请大家帮帮忙把