关注
#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;
}
查看原帖
点赞 评论
相关推荐
01-03 14:09
成都信息工程大学 Java 点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 实习的你做了哪些离谱的工作 #
4497次浏览 63人参与
# 工作压力大,你会干什么? #
4161次浏览 108人参与
# MiniMax求职进展汇总 #
1468次浏览 25人参与
# 简历第一个项目做什么 #
2735次浏览 58人参与
# 找实习记录 #
10626次浏览 188人参与
# 我的付费上班经历 #
6909次浏览 116人参与
# 租房找室友 #
57966次浏览 237人参与
# 如果不上班,你会去做什么 #
2836次浏览 102人参与
# AI让你的思考变深了还是变浅了? #
1623次浏览 53人参与
# 邪修省钱套路 #
3359次浏览 116人参与
# 职场上哪些行为很加分? #
314104次浏览 3549人参与
# 参加哪些竞赛对找工作有帮助? #
4290次浏览 87人参与
# 为了入行xx岗,我学了__ #
2447次浏览 41人参与
# 学历对求职的影响 #
587398次浏览 3999人参与
# 产品实习,你更倾向大公司or小公司 #
193516次浏览 2074人参与
# 如果再来一次,你还会选择这个工作吗? #
778616次浏览 6241人参与
# 一上班就想____,这正常吗? #
13840次浏览 142人参与
# 用一句话形容你的团队氛围 #
34885次浏览 276人参与
# 你找工作经历过哪些骗局? #
26982次浏览 214人参与
# 找工作时的取与舍 #
115666次浏览 853人参与
# 携程工作体验 #
20542次浏览 71人参与
查看3道真题和解析