没有剪枝的dfs, 会导致异常么?
查看原帖
没有剪枝的dfs, 会导致异常么?
251011
Tokubara楼主2020/10/10 15:56

我遇到了段异常, 但不确定是不是调用栈太深的原因.

#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <cmath>
#include <algorithm>
#include <cstring>
using namespace std;

int n,m,count_,a,b; // a,b是马的坐标(x,y)
void func(int x, int y) {
  if(x==n&&y==m) {
    count_++;
    return;
  } 
  // 往下走
  if(abs(x+1-a)+abs(y-b)!=3 || x+1==a || y==b) {
    func(x+1,y);
  }
  // 往右走
  if(abs(x-a)+abs(y+1-b)!=3 || x==a || y+1==b) {
    func(x,y+1);
  }
}

int main() {
  scanf("%d %d %d %d", &m, &n, &a, &b);
  func(0,0);
  printf("%d\n",count_);
}

结果就是Segmentation fault

2020/10/10 15:56
加载中...