http://poj.org/problem?id=1085
状态dp搜索
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
using namespace std;
int dps[1<<12][2];
int mark[18];
vector<int>vec[18];
bool vis[18];
int cnt;
int tri[9][3]={
1,2,3,
4,5,6,
7,8,9,
10,11,12,
13,14,15,
16,17,18,
3,5,7,
6,11,13,
9,14,16
};
int mp[10][10]={
0,0,1, 0, 0, 0, 0, 0, 0, 0,
0,0,2, 3, 4, 0, 0, 0, 0, 0,
1,2,0, 0, 6, 7, 0, 0, 0, 0,
0,3,0, 0, 5, 0, 9,10, 0, 0,
0,4,6, 5, 0, 8, 0,12,13, 0,
0,0,7, 0, 8, 0, 0, 0,15,16,
0,0,0, 9, 0, 0, 0,11, 0, 0,
0,0,0,10,12, 0,11, 0,14, 0,
0,0,0, 0,13,15, 0,14, 0,17,
0,0,0, 0, 0,16, 0, 0,17, 0
};
int check(int x){
int cou=0;
for(int i=0;i<vec[x].size();i++){