题意:
给你一个n*m的地图,问你从起点出发,吧所有的宝藏都捡完用的最少时间。
给你一个n*m的地图,问你从起点出发,吧所有的宝藏都捡完用的最少时间。
思路:k <= 4,水题,直接开一个数组mark[now][x][y];now代表的是当前检宝藏的二进制压缩状态,然后就直接搜索就行了。
#include<stdio.h> #include<string.h> #include<queue> #define N 100 + 5 using namespace std; typedef struct { int x ,y ,now; }NODE; NODE xin ,tou; int mark[1<<4][N][N]; int map[N][N]; int dir[4][2] = { 0 ,1 ,0 ,-1 ,1 ,0 ,-1 ,0}; NODE K[5]; int n ,m ,k; bool ok(int x ,int y ,int now) { return x <= n && x >= 1 && y <= m && y >= 1 && !mark[now][x