Logo 阿兹卡班的小天狼星的博客

博客

616

2023-03-23 21:37:49 By 阿兹卡班的小天狼星

616http://go.helloworldroom.com:50080/problem/616

这次是一道深搜题:

(1):以后做题不要用复杂的方式去做,如把一维数组改成二位数组,两次循环做的事用一次试一试,多一事不如少一事;

(2):函数里尽量传的参数更少,尽量用成全局;

本题思路: (从a[1][1]开始搜,搜过的用3代替,没搜到的就是二。为了防止开始就是1,把最外围一圈换成0。最后输出) 刚开始我是搜内部的,比较麻烦,而且函数也判断错是否越界。 AC:

include

include

using namespace std; int a[35][35],x1[4]={-1,0,1,0},y1[4]={0,-1,0,1},n;

void search(int x,int y){

if(x==n+1&&y==n+1){

    return ;

}

for(int i=0;i<4;i++){

    int x2=x+x1[i];

    int y2=y+y1[i];

    if(x2>=0&&x2<=n+1&&y2>=0&&y2<=n+1&&a[x2][y2]==0){

        a[x2][y2]=3;

        search(x2,y2);

    }

} 

}

int main(){

cin>>n;

for(int i=1;i<=n;i++){

    for(int j=1;j<=n;j++){

        cin>>a[i][j];

    }

}

search(0,0);

for(int i=1;i<=n;i++){

    for(int j=1;j<=n;j++){

        if(a[i][j]==3){

            cout<<0<<" ";

        }else if(a[i][j]==0){

            cout<<2<<" ";

        }else{

            cout<<a[i][j]<<" ";

        }

    } 

    cout<<endl;

}

return 0;

}

评论

李凌宇
你的代码在编辑的时候可以上下都用三个反引号括起来

发表评论

可以用@mike来提到mike这个用户,mike会被高亮显示。如果你真的想打“@”这个字符,请用“@@”。