[C] 纯文本查看 复制代码 void search3(int k)
{
for(int i=1;i<n;i++)
{
if(s+i<=n&&i>=a1[k-1])
{
s+=i;
a1[k]=i;
if(s==n)
{
for(int j=1;j<k;j++)
{
cout<<a1[j]<<"+";
}
cout<<a1[k]<<endl;
}
else
{
search3(k+1);
}
s-=i;
}
}
}
void chaifen()//拆分
{
cin>>n;
a1[0]=1;
search3(1);
}
bool check(int i,int j)
{
for(int k=0;k<8;k++)
{
if(i==k||j==b[k]||abs(i-k)==abs(j-b[k])&&b[k]>=0)
{
return false;
}
}
return true;
}
void search4(int n)
{
for(int k=0;k<8;k++)
{
if(check(k,n))
{
b[k]=n;
if(n==8)
{
cnt++;
}
else
{
search4(n+1);
}
b[k]=-1;
}
}
}
void eightqueen()
{
memset(b,-1,sizeof(b));
search4(1);
cout<<cnt;
}
|