题目描述:
小明通过某种方法测量出了湖每块区域冰的承重量,他想知道当他从一个点沿着某个方向滑冰时,会不会落入湖中。
输入格式:
第一行一个正整数T,表示测试数据的组数。
对于每组测试数据:
第一行是两个正整数m和n,表示湖的行和列。
接下来m行每行n个字符(字符只包含数字字符0~9或#号)。其中‘#’表示陆地,数字字符则表示该位置冰块的承重量(当承重量<小明的体重时,小明会落入湖中);
下一行是三个正整数x,y,w,表示小明所站的起始位置以及小明的体重w,系统保证起始点的承重量一定大于等于小明的体重(注意:起始位置可能为陆地,但是可以继续滑行,直到掉入湖中或者遇到陆地停下来)。
再下一行是一个字符串,表示小明的滑行方向(不同字符串所代表的方向如下:“L”:向左;”R”:向右;“U”:向上;“D”:向下;“LU”:向左上;“LD”:向左下;“RU”:向右上;“RD”:向右下)。
输出格式:
每行输出0或1,0表示小明在滑行过程中不会掉入湖中,1表示会掉入湖中。
样例输入:
2 10 10 32######## 222222222# #21116141# #21212121# #311##121# #311##121# #41112111# #21121211# #11211151# ########## 0 0 2 RD 10 10 32######## 222222222# #21116141# #21212121# #311##121# #311##121# #41112111# #21121211# #11211151# ########## 1 5 2 D
样例输出:
1 0
提示:
第一个测试数据,小明从最左上角的点a[0][0]向右下方滑,滑过两格后到达a[2][2],此处承重量为1,小于小明的体重2,因此小明会掉入湖中。
第二个测试数据,小明从点a[1][5]向下滑行,沿途的经过的冰块的承重量为6和2,均不小于小明的体重,而当滑行到a[4][5]时,撞到陆地,小明不会再继续滑行,因此整个过程小明不会掉入湖中。
1<=T<=10
1<=n,m<=100
#include<bits/stdc++.h>
using namespace std;
char a[105][105];
int main() {
int T;
cin>>T;
while( T-- ) {
int m,n,x,y,t,dx,dy;
string u;
cin >> n >> m;
for(int i=1; i<=n; i++)
for(int j=1; j<=m; j++)
cin >> a[i][j];
cin >> x >> y >> t >> u;//起始坐标(x,y),体重t,固定方向u
x += 1, y += 1;
if( u == "L" ) dx = 0, dy = -1;
if( u == "R" ) dx = 0, dy = 1;
if( u == "U" ) dx = -1, dy = 0;
if( u == "D" ) dx = 1, dy = 0;
if( u == "LU" ) dx = -1, dy = -1;
if( u == "LD" ) dx = 1, dy = -1;
if( u == "RU" ) dx = -1, dy = 1;
if( u == "RD" ) dx = 1, dy = 1;
while ( 1 ) {
x+=dx;
y+=dy;
if( x<1 || x>n || y<1 || y>m || a[x][y]=='#' ) {
cout << 0 <<endl; //成功
break;
}
if( a[x][y]-'0' < t ) {
cout << 1<<endl; //失败
break;
}
}
}
}
文章描述了一个编程问题,涉及计算小明在给定湖面冰块承重图上,根据初始位置、体重和滑行方向判断是否会落入湖中的过程。通过代码实现判断滑行路径上的冰块是否足够支撑小明的体重。
814

被折叠的 条评论
为什么被折叠?



