关注
#include <iostream>
#include <vector>
#include <climits>
using namespace std;
vector<vector<int> > map;
int maxf = INT_MIN;
vector<pair<int,int>> shortesresult;
/*
To find the path with least cost;
Move left or right costs 1
Move Up costs 3
Move down costs 0
input:
4 4 10 // n m p p is total allowed cost
1 1 1 1
1 1 1 1
0 0 0 1
0 0 1 1
*/
bool dfs(int x,int y,int n,int m,int
p,vector<pair<int,int>> &result){
if(p <= 0){
return false; //
}
if(x == 0 and y == m){
result.push_back({x,y});
for(auto &p : result){
//cout << '[' << p.first <<
"," << p.second << ']';
}
//cout << p << endl;
if(p > maxf){
shortesresult = result;
maxf = p;
}
result.pop_back(); // bug!!!!!!
return true;
}
if(x < 0 || y < 0 || x > n || y > m ){
return false;
}
if(map[x][y] <= 0){
return false;
}
//cout << x << " " << y
<< " " << p << endl;
result.push_back({x,y});
map[x][y] = -1;
bool r1 = dfs(x + 1,y,n,m,p,result);
bool r2 = dfs(x,y + 1,n,m,p - 1,result);
bool r3 = dfs(x,y - 1,n,m,p - 1,result);
bool r4 = dfs(x - 1,y,n,m,p - 3,result);
result.pop_back();
map[x][y] = 1;
return false;
}
int main(){
int n,m,p,tmp;
cin >> n >> m >>p;
map = vector<vector<int>
>(n,vector<int>(m,0));
for(int i = 0; i < n; i ++){
for(int j = 0;j < m;j ++){
cin >> tmp;
map[i][j] = tmp;
}
}
vector<pair<int,int>> result;
bool isFirst = true;
dfs(0,0,n-1,m-1,p,result);
if(shortesresult.size() != 0){
for(auto &p : shortesresult){
if(!isFirst){
cout << ',';
}
cout << '[' << p.first << ","
<< p.second << ']';
isFirst = false;
}
}else{
cout << "Can not escape!" << endl;
}
cout << endl;
}
查看原帖
点赞 评论
相关推荐
04-10 17:18
南阳理工学院 Java 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 哪些AI项目值得做? #
15224次浏览 422人参与
# 秋招笔试记录 #
397442次浏览 2193人参与
# 华泰星战营,提前锁定校招offer #
11513次浏览 351人参与
# 实习时最怕听到的一句话 #
14102次浏览 135人参与
# 90后北漂现状 #
38629次浏览 222人参与
# 找不到大厂实习可以去小厂吗? #
12139次浏览 108人参与
# 机械人,说说你的烦心事 #
143874次浏览 1150人参与
# 应届生初入职场,求建议 #
332416次浏览 2916人参与
# 简历上如何体现你的“AI”能力? #
6855次浏览 167人参与
# 你简历上最心虚的一句话 #
14356次浏览 154人参与
# 没有面试的日子里,你在做什么 #
8205次浏览 228人参与
# 携程笔试 #
162208次浏览 903人参与
# 如果有时光机,你最想去到哪个年纪? #
77041次浏览 858人参与
# 你总挂在第__面? #
5033次浏览 47人参与
# ai智能作图 #
682308次浏览 5726人参与
# 汉得笔试 #
3881次浏览 23人参与
# 24届秋招同行攻略分享 #
1478445次浏览 14432人参与
# 你知道最慷慨和最抠的公司分别是 #
7109次浏览 59人参与
# 绿盟笔试 #
3390次浏览 24人参与
# 大厂无回复,继续等待还是奔赴小厂 #
356678次浏览 2024人参与
# 机械人还在等华为开奖吗? #
333807次浏览 1628人参与
查看26道真题和解析