问题标题: 马的遍历哪错了

0
0
已解决
黄俊博
黄俊博
资深光能
资深光能

#include<iostream>
using namespace std;

int dir[4][2]={(2,1),(1,2),(-1,2),(-2,1)};
int a[1000],b[1000],n=1;
bool used[19][19];

void search(int x,int y)
{
    if(x==4 && y==8)
    {        
        for(int i=1;i<=n-1;i++)
        {
            cout<<a[i]<<","<<b[i]<<"->";
        }
        cout<<a[n]<<","<<b[n]<<endl;
        n=0;
        return ;
    }
    else
    {
        used[x][y]=1;
        for(int i=0;i<4;i++)
        {
            int nextx=x+dir[i][0],nexty=y+dir[i][1];
            if(nextx>=0 && nextx<=4 && nexty>=0 && nexty<=8 && nexty>y)
            {
                
                a[n]=x;
                b[n]=y;
                n++;
                search(nextx,nexty);
            }
        }
        used[x][y]=0;
    }
}

int main()
{
    search(0,0);
    return 0;
}

求大神


1
已采纳
葛新
葛新
资深守护
资深守护

for(int i=0;i<4;i++)
{
      int nextx=x+dir[i][0],nexty=y+dir[i][1];
      if(nextx>=0 && nextx<=4 && nexty>=0 && nexty<=8 && nexty>y)
      {
            used[nextx][nexty]=1;    
            a[n]=x;
            b[n]=y;
            n++;
            search(nextx,nexty);
            used[nextx][nexty]=0;  
       }
}
int main()
{
    used[0][0] = true;
    search(0,0);
    return 0;
}

 

葛新在2018-01-10 22:17:17追加了内容
for(int i=0;i<4;i++)
{
      int nextx=x+dir[i][0],nexty=y+dir[i][1];
      if(nextx>=0 && nextx<=4 && nexty>=0 && nexty<=8 && nexty>y)
      {
            used[nextx][nexty]=1;    
            a[n]=x;
            b[n]=y;
            n++;
            search(nextx,nexty);
            used[nextx][nexty]=0;  
            n--;
       }
}
 

 

0
0
0
我要回答