首页 > 代码库 > POJ 3050
POJ 3050
我是开了个六维的数组来记住它的每一步
1 #include <cstdio> 2 #include <cstring> 3 #include <cstdlib> 4 #include <cctype> 5 #include <cmath> 6 #include <time.h> 7 #include <string> 8 #include <map> 9 #include <stack>10 #include <set>11 #include <queue>12 #include <vector>13 #include <algorithm>14 #include <iostream>15 using namespace std;16 typedef long long ll;17 typedef pair<int,int> P;18 #define PI acos( -1.0 )19 const double E = 1e-8;20 const int INF = 0x7fffffff;21 22 int a[10][10], b[10];23 int dir[][2] = { 0, -1, 0, 1, -1, 0, 1, 0 };24 int mark[10][10][10][10][10][10];25 int ans = 0;26 27 void dfs( int x, int y, int num )28 {29 if( num == 7 )30 {31 if( !mark[b[0]][b[1]][b[2]][b[3]][b[4]][b[5]] )32 {33 mark[b[0]][b[1]][b[2]][b[3]][b[4]][b[5]] = 1;34 ++ans;35 }36 return;37 }38 for( int k = 0; k < 4; ++k )39 {40 int dx = x + dir[k][0];41 int dy = y + dir[k][1];42 if( dx >= 0 && dy >= 0 && dy< 5 && dx < 5 ) {43 b[num] = a[dx][dy];44 dfs( dx, dy, num+1 );45 }46 }47 }48 49 int main()50 {51 for( int i = 0; i < 5; ++i )52 for( int j = 0; j < 5; ++j )53 scanf( "%d", a[i]+j );54 memset( mark, 0, sizeof( mark ) );55 for( int i = 0; i < 5; ++i )56 for( int j = 0; j < 5; ++j ) {57 b[0] = a[i][j];58 dfs( i, j, 1 );59 }60 printf( "%d\n", ans );61 return 0;62 }
POJ 3050
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。