⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 (循环)(回溯).cpp

📁 自己收集的八皇后问题相关知识,有不少源代码,能解决八皇后问题
💻 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 + -