poj 3009 Curling 2.0

Curling 2.0

只要步数超过了10||超过了之前已经存在的步数,就可以不用再继续往下找了

#include 
#include 
#include 
#include 
#include 
using namespace std;

int n, m;
int Map[30][30];
int dx[] = {0,0,1,-1};
int dy[] = {1,-1,0,0};
int sx, sy;
int ex, ey;
int flag;
int ans;

void dfs(int x, int y, int step)
{
//    printf("step==%d\n", step);
//    for(int i = 1;i <= n;i++){
//        for(int j = 1;j<=m;j++){
//            printf("%d ", Map[i][j]);
//        }
//        cout << endl;
//    }
//    printf("X%d Y%d\n", x, y);
  //  if(flag) return;
    if(step>=ans){
        return;
    }
    int F = 0;
    for(int i = 0;i < 4;i++){
        int xx = x+dx[i];
        int yy = y+dy[i];
        if(xx>=1&&xx<=n&&yy>=1&&yy<=m&&Map[xx][yy]!=1){
            int xxx = x;
            int yyy = y;
            F = 0;
            while(1){
                xxx+=dx[i];
                yyy+=dy[i];
              //  printf("%d %d %d\n", xxx, yyy, Map[xxx][yyy]);
                if(xxx<=0||xxx>n||yyy<=0||yyy>m){
                    F =1;
                    break;
                }
                if(Map[xxx][yyy]==0){
                    continue;
                }else if(Map[xxx][yyy]==1){
                    Map[xxx][yyy] = 0;
                    xxx-=dx[i];
                    yyy-=dy[i];
                    break;
                }else if(Map[xxx][yyy]==3){
                //    printf("%d %d\n", step+1, ans);
                    if(step+1


你可能感兴趣的:(POJ,深搜DFS)