hdu 1016 DFS

来源:互联网 发布:dota2最新比赛数据 编辑:程序博客网 时间:2024/05/22 10:38

经典的搜索

AC代码如下:

#include <iostream>#include <vector>#include <cmath>#include <cstdio>#include <cstring>using namespace std;int n;int num[21];int mark[21];int now;bool judge( int n ){if( n == 1 || n == 0 ){return false;}double x = n;int root = (int)sqrt( x );for( int i = 2; i <= root; i++ ){if( n % i == 0 ){return false;}}return true;}void DFS( int number ){if( number == n ){if( judge( num[number] + num[1] ) ){for( int i = 1; i < n; i++ ){cout << num[i] << " ";}cout << num[n] << endl;}return;}for( int i = 1; i <= n; i++ ){if( !mark[i] ){num[number+1] = i;mark[i] = 1;if( judge( num[number] + num[number+1] ) ){DFS( number + 1 );}mark[i] = 0;}}}int main(){int Case = 1;while( scanf( "%d", &n ) != EOF ){memset( num, 0, sizeof( num) );memset( mark, 0, sizeof( mark ) );printf( "Case %d:\n", Case++ );for( int i = 1; i <= n; i++ ){num[1] = i;mark[i] = 1;DFS( 1 );}cout << endl;}return 0;}


 

原创粉丝点击