描述
迷迷糊糊中,小童进入了C++的编程世界。突然,他发现自己处于一个字符方阵之中。字符方阵由 *
和 .
组成,.
的位置可以毫不费力地通过;通过 *
的位置需要消耗1个体力值。小童处于 .
的位置。
由于是在梦中,小童走路的时候不会拐弯。所以小童只能从当前位置选择“上下左右”当中的一个方向直走,直到走出方阵。请你帮小童计算一下,要走出方阵最少需要消耗多少体力值。
输入描述
第1行2个正整数m和n(3 < m,n < 20),表示方阵的大小。
接下来m行,每行n个字符(’*‘和’.’)。字符之间用空格隔开。
最后一行是两个正整数x和y,表示小童当前所在的行号和列号。行号和列号从1开始。
输出描述
一个整数,表示小童需要消耗的最少体力值。
输入样例:
3 4
* * * *
* * . *
* * * *
2 3
输出样例:
1
代码区:
#include<bits/stdc++.h>
using namespace std;
int s[50],m,n,x,y;
char fz[110][110];
int main(){
cin>>m>>n;
for(int i=1;i<=m;i++){
for(int j=1;j<=n;j++){
cin>>fz[i][j];
}
}
cin>>x>>y;
int a=x,b=y;
while(a>=1){
if(fz[a][b]=='*'){
s[1]++;
}
a--;
}
a=x;b=y;
while(a<=m){
if(fz[a][b]=='*'){
s[2]++;
}
a++;
}
a=x;b=y;
while(b>=1){
if(fz[a][b]=='*'){
s[3]++;
}
b--;
}
a=x;b=y;
while(b<=n){
if(fz[a][b]=='*'){
s[4]++;
}
b++;
}
int max=0x3f3f3f;
for(int i=1;i<=4;i++){
if(s[i]<max){
max=s[i];
}
}
cout<<max;
}