您的位置:首页 > 其它

joj 儿死三八

2007-09-12 16:25 190 查看
joj 2438

这个呢 是搜索

起初想的是记下到每个点杀k个怪的最短时间

后来发现这样是不够的,因为杀的怪有不同的组合

比如

2 3 5

ooo

ooO

(初始位置为0,0)

到(1,1) 杀3个怪的最短时间是3,但是有两种走法

0,0 0,1 1,1和

0,0 1,0 1,1

但是第一种走法得不到最优解

所以光记下最短时间是不够的

我呢 就是深度优先搜索

关键是减支

1.这个骑士呢,不可能从x,y出发绕了一圈一个小怪也没杀就又回到x,y

2.假设骑士已经升级,如果从当前位置到终点的时间加上当前时间都比已得到的解差的话就没有必要继续搜下去了

#include <iostream>

using namespace std;

char graph[70][70];

int shortest[70][70];

int state[70][70][70];

int n,m,k,ans;

void init()

void preDFS(int x,int y)

void get_shortest()

void DFS(int x,int y,int now,int t)

int main()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: