📄 (循环)(回溯).cpp
字号:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main ( int argc, char * argv[])
{ int q[1024]; int i, j, k, c, n; time_t tm;
switch ( argc )
{ case 1: n = 11; break;
case 2: n = atoi ( argv[1] );
if ( n <= 0 || n >= 1024 ) return 0; break;
default: return 0;
}
tm = time(0);
for ( i=0,c=0,q[0]=0; ; )
{
if ( n == q[i] )
{
if ( 0 == i ) break;
i--;
q[i]++;
continue;
}
for ( j=0; j<i; j++ )
if ( q[i]==q[j] || q[i]-i==q[j]-j || q[i]+i==q[j]+j )
break;
if ( j == i )
{
if ( n-1 == i )
{
c++;
//if (q[0]==n/2 )
{
printf ( "%5d:", c );
for ( k=0; k<n; k++ )
printf ( " %d", q[k]+1 );
printf ( "\n" );
}
q[i]=n;
//break;
}
else
{
i++;
q[i] = 0;
}
}
else q[i]++;
}
printf("total:%d,%dsec\n",c,(int)(time(0)-tm));
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -