WAJUEJI which home strong!

WAJUEJI which home strong!

时间限制: 1000 ms  |  内存限制: 65535 KB
难度: 2
描述

在一个山沟里,姐弟俩同时考上了大学。但由于家里拮据,所以这并不是什么好消息。父亲对孩子说:我就是砸锅卖铁也要把你们姐俩供出来。 当时的姐姐已经决定放弃上学的机会。 没想到第二天天还没亮,弟弟就偷偷带著几件破衣服和几个乾巴馒头走了,在姐姐枕边留下一个纸条: 姐,你别愁了,考上大学不容易,我出去打工供你。弟。 姐姐握著那张字条,趴在炕上,失声痛哭。 那一年,弟弟17岁,姐姐20岁。 姐姐用父亲满村子借的钱和弟弟在工地裏搬水泥挣的钱终於读到了大三。 一天姐姐正在寝室看书,同学跑进来对姐姐说,有个老乡在找你。姐姐很纳闷,走出去后,远远地看见弟弟,穿著满身是水泥和沙子的工作服。姐姐说,你怎和我同学说你是我老乡啊? 他笑著说,你看我穿的这样,说是你弟,你同学还不笑话你? 姐姐鼻子一酸,眼泪就落了下来。弟弟赶忙为姐姐擦掉眼泪,说:姐,你别哭,我这次来是想让你帮我打听一下,学挖掘机哪家强? 

 

在你的帮助下,弟弟踏上了去蓝翔的路。

那么问题就来了。

输入
第一个数T,T组测试数据。
两个数 n, m; ( 0< n , m <= 100 ) 表示一个h行m列的二维地图。
接下来n行每行m 个字符。
‘s’ 表示弟弟目前所在位置。
‘# ’表示此处为一座山。为了节省体力,不从此处通行。
从‘A’-‘Z’表示各地的经济水平,对应1-26,路过对应字符的地区需要交对应的生活费。
‘l’表示蓝翔技校的所在地。
s 与 l 均为小写字母。
弟弟只能走四个方向。
输出
输出一个数表示弟弟到达蓝翔需要的生活费最小是多少。
如果不能到达,输出 -1。
样例输入
3
3 5
#sVGF
A##ZA
lCDBC
3 3
sAB
ABS
ABl
3 3
s#B
###
ABl
样例输出
48
4
-1
/*
分类:bfs 
来源:NYOJ WAJUEJI which home strong! 
思路:bfs加优先队列 
We are giants.
create by Lee_SD on 2017/4/20
*/
#include<queue>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<stack>
#include<string.h>
#include<stdio.h>
using namespace std;

struct Node{
	int x,y;
	int step;
	
	// 由小到大 
	friend bool operator<(Node a,Node b){
		return a.step>b.step;
	}
};

int n,m;
char map[105][105];
int vis[105][105];
int dir[4][2]={-1,0,1,0,0,-1,0,1};
int st,ed;
int flag;
int ans;
void bfs(){
	Node tem,p;
	priority_queue<Node>q;
	memset(vis,0,sizeof(vis));
	p.x=st;
	p.y=ed;
	p.step=0;
	vis[st][ed]=1;
	q.push(p);
	
	while(!q.empty())
	{
		p=q.top();
		q.pop();
		
		if(map[p.x][p.y]=='l'){
			flag=0;
			ans=p.step;
			return ;
		}
		
		
		for(int i=0;i<4;i++){
			tem.x=p.x+dir[i][0];
			tem.y=p.y+dir[i][1];
			
			if(map[tem.x][tem.y]=='#'||tem.x<0||tem.x>=n||tem.y<0||tem.y>=m||vis[tem.x][tem.y])
			continue;
			
			
			int s=0;
			
			if(map[tem.x][tem.y]>='A'&&map[tem.x][tem.y]<='Z')
			s=map[tem.x][tem.y]-'A'+1;
		
			tem.step=p.step+s;
			vis[tem.x][tem.y]=1;
			q.push(tem);
			
			
						
		}	
	}
		
} 

int main(){
	int k;
	scanf("%d",&k);
	while(k--){
		scanf("%d%d",&n,&m);
		
		for(int i=0;i<n;i++)
		{
		scanf("%s",map[i]);
		for(int j=0;j<m;j++)
		if(map[i][j]=='s')
		{
			st=i;
			ed=j;
		}
		
		}	
		
		ans=0x3f3f3f3f;
			flag=1;
		bfs();
	
		if(flag)
		printf("-1\n");
		else
		printf("%d\n",ans);
		
	}
}


根据引用\[1\]中提供的信息,出现 "npm ERR! gyp verb `which` failed" 错误可能是由于以下几个原因导致的: 1. 缺少安装 gyp:请确保已经全局安装了 gyp,可以通过运行命令 "npm install -g node-gyp" 来安装。 2. Python 版本问题:请检查您的 Python 版本是否为 2.7,并且已经正确配置了环境变量。您可以通过运行 "python --version" 命令来检查 Python 版本,并确保环境变量中包含了正确的 Python 路径。 3. npm 配置问题:请确保已经正确配置了 npm 的变量。您可以通过运行 "npm config get python" 命令来检查当前的 Python 配置,并使用 "npm config set python python2.7" 命令来设置正确的 Python 版本。 4. 缺少 MSVS:如果您的项目依赖于 MSVS(Microsoft Visual Studio),请确保已经正确设置了 MSVS 的版本。您可以通过运行 "npm config set msvs_version 2017" 命令来设置 MSVS 的版本为 2017。 请按照上述步骤逐一检查和解决问题,然后重新运行 "npm install" 命令,应该能够解决 "npm ERR! gyp verb `which` failed" 错误。 #### 引用[.reference_title] - *1* [npm ERR gyp verb `which` failed Error: not found: python2](https://blog.csdn.net/weixin_45168627/article/details/122546012)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值