void search(int cur)
{
int i,j;
if(cur==n)
tot++;
else
for(i=0;i<n;i++)
{
int ok=1;
C[cur]=i;
for(j=0;j<cur;j++)
if(C[cur]==C[j] ||cur-C[cur]==j-C[j] || cur+C[cur]==j+C[j])
{
ok=0;
break;
}
if(ok)
search(cur+1);
}
}
按书上讲,所谓回溯,当把问题分为若干问题,并且递归求解时,如果当前步骤没有合法选择,则函数返回上一级调用,我们称这种现象叫做回溯、