为什么有时free():无效的下一个大小(快)发生,有时不发生?

时间:2017-08-28 03:18:38

标签: c++ free

我写了这段代码来解决N-Queens问题。

有时ex)6和10有error ; free(): invalid next size (fast)但有时像8和2它不是

我不知道为什么会在特定情况下发生......

#include <iostream>

using namespace std;

bool check(int *a,int num){
  for(int i=0;i<num;++i){
    if((double)(a[i]-a[num])/(i-num)==1.0||(double)(a[i]-a[num])/(i-num)==-1.0||a[i]==a[num])
      return false;
  }
  return true;
}

int func(int *array,int num,int n){
  int sum=0;
  for(int i=0;i<n;++i){
    array[num]=i;

    if(num==n-1){
      if(check(array,num))
        sum+= 1;
    }

    if(check(array,num)) sum+=func(array,num+1,n);
  }
  return sum;
}

int main(){
  int N=0;
  cin>>N;
  for(int i=0;i<N;i++){
    int n=0;
    cin >> n;
    int *array=new int[n];
    cout<<"+++++++++"<<n<<endl;
    int a = func(array,0,n);
    delete[] array;
    cout<<a<<endl;
  }
  return 0;
}

0 个答案:

没有答案