#include
#include
using namespace std;
int sum,tx[101][101],h,l;
int ss[1001][1001];
void hxbl(int x,int y,int d/方向/)
{
sum++;
tx[x][y]=1;/填写/
cout<<ss[x][y]<<endl;
if(sum==h*l)
{
return;/*结束操作*/
}
if(d==1)
{
if(tx[x][y+1]==1||y>=l){hxbl(x+1,y,2);}
else {hxbl(x,y+1,1);}
}
if(d==2)
{
if(tx[x+1][y]==1||x>=h){hxbl(x,y-1,3);}
else {hxbl(x+1,y,2);}
}
if(d==3)
{
if(tx[x][y-1]==1||y<=1){hxbl(x-1,y,4);}
else {hxbl(x,y-1,3);}
}
if(d==4)
{
if(tx[x-1][y]==1||x<=1){hxbl(x,y+1,1);}
else {hxbl(x-1,y,4);}
}
}
int main()
{
cin>>h>>l;
for(int i=1; i<=h; i++)
for(int j=1; j<=l; j++)
cin>>ss[i][j];
hxbl(1,1,1);
return 0;
}
都可以,从0开始把数组0的空间空出来了,从一开始逻辑上好理解一点吧!
有帮助的话,采纳一下哦!
个人喜好吧。有些人喜欢从1到n作为下标,有些喜欢从0到n-1作为下标,都可以