问题标题: 酷町堂:救救我!!!救救我!!!救救我!!!

0
1
已解决
陈子明
陈子明
中级光能
中级光能

题目链接: 酷町堂:5014

#include<bits/stdc++.h>
using namespace std;
int n,m,cnt,sx,sy,fx,fy;
int dir[8][2]={{-1,0},{-1,-1},{0,-1},{1,-1},{1,0},{1,1},{0,1},{-1,1}};
int h[15],l[15];
bool vis[10][10];
void dfs(int x,int y,int step){
    h[step]=x;
    l[step]=y;
    if(x==fx&&fy==fy){
        cnt++;
        if(cnt<=5){
            for(int i=1;i<=step;i++){
                printf("(%d,%d)->",h[i],l[i]);
            }
            cout<<"("<<fx<<","<<fy<<")"<<"\n";
        }
        return ;
    }
    for(int i=0;i<8;i++){
        int nx=x+dir[i][0],ny=y+dir[i][1];
        if(nx>=1&&nx<=8&&ny>=1&&ny<=8&&!vis[nx][ny]){
            vis[nx][ny]=1;
            dfs(nx,ny,step+1);
            vis[nx][ny]=0;
        }
    }
    return ;
} 
int main(){
    //freopen(".in","r",stdin);
    //freopen(".out","w",stdout);
    cin>>sx>>sy>>fx>>fy;
    for(int i=1;i<=8;i++){
        for(int j=1;j<=8;j++){
            cin>>vis[i][j];
        }
    }
    dfs(0,0,1);
    cout<<cnt;
    //fclose(stdin);
    //fclose(stdout);
    return 0;
}

救救我!!!

5014 0分

在线等,急!!!


0
我要回答