https://www.luogu.org/problemnew/show/P1219
这是洛谷上的一道水题,传统的八皇后问题。那我们就用C++和C分别编写代码看看它们哪个的速度更快。
#include<stdio.h>
int ans[14],check[3][28]={0},sum=0,n;
void eq(int line)
{
if(line>n)
{
sum++;
if(sum>3) return;
else
{
for(int i=1;i<=n;i++) printf("%d ",ans[i]);
printf("\n");
return;
}
}
for(int i=1;i<=n;i++)
{
if((!check[0][i])&&(!check[1][line+i])&&(!check[2][line-i+n]))
{
ans[line]=i;
check[0][i]=1; check[1][line+i]=1; check[2][line-i+n]=1;
eq(line+1);
check[0][i]=0; check[1][line+i]=0; check[2][line-i+n]=0;
}
}
}
int main()
{
scanf("%d",&n);
eq(1);
printf("%d",sum);
return 0;
}
现在,分别用g++和gcc编译运行一下,用Linux下的Time命令。
如图:
可以看到C++明显比C快。