?? (循環)(回溯).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 + -