您的位置:首页 > 其它

八皇后问题

2014-11-10 15:39 211 查看
八皇后问题是计算机专业的经典问题,运用递归实现,回溯法把时间复杂度从n的阶乘次降低下来。

c语言实现:

#include <stdio.h>

int result[ 92 ][ 8 ];

int temp [8];

int num;

void queen( int i )

{

int j , k ;

if( i == 8 )

{

for( j = 0; j < 8 ; j++ )

result[ num ][ j ] = temp[ j ] + 1;

num++;

return ;

}

for( j = 0 ; j < 8 ; j++ )

{

for( k = 0 ; k < i ; k++ )

if( ( temp[ k ] == j ) || ( temp[ k ] - j == k - i) || ( j - temp[ k ] == k - i ) ) break;

if( k == i )

{

temp[ i ] = j;

queen( i + 1);

}

}

}

int main( )

{

int i , j;

num = 0;

queen( 0 );

for( i = 0 ;i < 92 ; i++ )

{

for( j = 0; j < 8 ; j++ )

printf( "%d ", result[ i ] [j ]);

printf("\n");

}

getchar();

return 0;

}

结果:

1 5 8 6 3 7 2 4

1 6 8 3 7 4 2 5

1 7 4 6 8 2 5 3

1 7 5 8 2 4 6 3

2 4 6 8 3 1 7 5

2 5 7 1 3 8 6 4

2 5 7 4 1 8 6 3

2 6 1 7 4 8 3 5

2 6 8 3 1 4 7 5

2 7 3 6 8 5 1 4

2 7 5 8 1 4 6 3

2 8 6 1 3 5 7 4

3 1 7 5 8 2 4 6

3 5 2 8 1 7 4 6

3 5 2 8 6 4 7 1

3 5 7 1 4 2 8 6

3 5 8 4 1 7 2 6

3 6 2 5 8 1 7 4

3 6 2 7 1 4 8 5

3 6 2 7 5 1 8 4

3 6 4 1 8 5 7 2

3 6 4 2 8 5 7 1

3 6 8 1 4 7 5 2

3 6 8 1 5 7 2 4

3 6 8 2 4 1 7 5

3 7 2 8 5 1 4 6

3 7 2 8 6 4 1 5

3 8 4 7 1 6 2 5

4 1 5 8 2 7 3 6

4 1 5 8 6 3 7 2

4 2 5 8 6 1 3 7

4 2 7 3 6 8 1 5

4 2 7 3 6 8 5 1

4 2 7 5 1 8 6 3

4 2 8 5 7 1 3 6

4 2 8 6 1 3 5 7

4 6 1 5 2 8 3 7

4 6 8 2 7 1 3 5

4 6 8 3 1 7 5 2

4 7 1 8 5 2 6 3

4 7 3 8 2 5 1 6

4 7 5 2 6 1 3 8

4 7 5 3 1 6 8 2

4 8 1 3 6 2 7 5

4 8 1 5 7 2 6 3

4 8 5 3 1 7 2 6

5 1 4 6 8 2 7 3

5 1 8 4 2 7 3 6

5 1 8 6 3 7 2 4

5 2 4 6 8 3 1 7

5 2 4 7 3 8 6 1

5 2 6 1 7 4 8 3

5 2 8 1 4 7 3 6

5 3 1 6 8 2 4 7

5 3 1 7 2 8 6 4

5 3 8 4 7 1 6 2

5 7 1 3 8 6 4 2

5 7 1 4 2 8 6 3

5 7 2 4 8 1 3 6

5 7 2 6 3 1 4 8

5 7 2 6 3 1 8 4

5 7 4 1 3 8 6 2

5 8 4 1 3 6 2 7

5 8 4 1 7 2 6 3

6 1 5 2 8 3 7 4

6 2 7 1 3 5 8 4

6 2 7 1 4 8 5 3

6 3 1 7 5 8 2 4

6 3 1 8 4 2 7 5

6 3 1 8 5 2 4 7

6 3 5 7 1 4 2 8

6 3 5 8 1 4 2 7

6 3 7 2 4 8 1 5

6 3 7 2 8 5 1 4

6 3 7 4 1 8 2 5

6 4 1 5 8 2 7 3

6 4 2 8 5 7 1 3

6 4 7 1 3 5 2 8

6 4 7 1 8 2 5 3

6 8 2 4 1 7 5 3

7 1 3 8 6 4 2 5

7 2 4 1 8 5 3 6

7 2 6 3 1 4 8 5

7 3 1 6 8 5 2 4

7 3 8 2 5 1 6 4

7 4 2 5 8 1 3 6

7 4 2 8 6 1 3 5

7 5 3 1 6 8 2 4

8 2 4 1 7 5 3 6

8 2 5 3 1 7 4 6

8 3 1 6 2 5 7 4

8 4 1 3 6 2 7 5
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: