用回溯发求n皇后问题,为什么一下完整代码可过手机编译器过不了
c4droid吧
全部回复
仅看楼主
level 2
DLH2803862177 楼主
用回溯发求n皇后问题,为什么一下完整代码可过手机编译器过不了VC++6.0
代码有错请批评指正,万分感谢
#include <iostream>
using namespace std;
int main()
{
void nqueen(int);
int x;
cin>>x;
nqueen(x);
return 0;
}
void nqueen(int n)
{
int p=n,j=0;
void queen(int,int,int&,int*,int*,int*,int*);
int*mmp=new int[n+2];
int*mp=new int[n+2];
int*mmpp=new int[2*(n+2)];
int*mmmp=new int[2*(n+2)];
for(int a=0;a<=n+1;a++)
{mp[a]=0;mmp[a]=0;mmmp[a]=0;mmpp[a]=0;}
std::cout<<"你输入的数为:"<<n
<<std::endl;
queen(n,p,j,mmp,mp,mmpp,mmmp);
std::cout<<"共计有"<<j<<"个解"
<<std::endl;
delete[] mmp;
delete[] mp;
delete[] mmmp;
delete[] mmpp;
}
void queen(int n,int p,int&j,int*mmp,int*mp,int*mmmp,int*mmpp)
{
int i;
if(n==0)
{
for(i=1;i<=p;i++)
std::cout<<mmp[i]<<'\t';
std::cout<<std::endl;
j++;
}
else
for(i=1;i<=p;i++)
if(!mp[i]&&!mmmp[p-n+i]&&!mmpp[p-i+p-n+1])
{
mp[i]=i;mmmp[p-n+i]=1;
mmpp[p-i+p-n+1]=1;mmp[p-n+1]=i;
queen(n-1,p,j,mmp,mp,mmmp,mmpp);
mp[i]=0;mmp[p-n+1]=0;
mmmp[p-n+i]=0;mmpp[p-i+p-n+1]=0;
}
}
2017年11月29日 14点11分 1
level 9
可能VC6不能在函数内声明函数。
2017年11月30日 01点11分 2
level 13
出门右转,VC吧谢谢(*°∀°)=3
2017年12月01日 07点12分 3
1