站外题求助!
查看原帖
站外题求助!
1240580
Chinese_good_FaFa楼主2024/6/8 14:24

相邻

题目描述

在一场模拟游戏中,每一位同学都有一个能力值,能力值的大小直接决定了同学们在这场游戏中的闯关能力。现在同学们在操场上排成了一个 n 行 m 列的队形,假设这个队形中所有人能力值都不同,那么给定 2 个能力值后,请你编程判断,这 2 个能力值对应的同学是否相邻?

相邻的定义是:如果两个同学在上下左右的位置是挨在一起的,那么就算是相邻的。

比如:如下是一个 3 行 4 列的队形,这个队形中每个数字代表了每个同学的能力值。

8 2 3 4

5 6 7 1

9 10 11 12

那么这个队形中,能力值 6 和能力值 10 两个值就是相邻的。

输入格式

第 1行有 2 个整数 n 和 m ,分别代表队形的行和列的值( 2≤n,m≤200)

接下来 n 行,每行有 m 个整数,代表每个同学的能力值(每个同学的能力值的值在 1∼100 之间)

最后一行输入 2个整数,代表 2 个不同能力值的值。

输出格式

如果两个能力值的值是相邻的,请输出字符 Y ,否则请输出字符 N 。

输入/输出例子1

输入:

3 4

8 2 3 4

5 6 7 1

9 10 11 12

6 10

输出:

Y

本人代码

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n,m,a[205][205],t1,t2,x1,y1,x2,y2;
    cin>>n>>m;
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            cin>>a[i][j];
        }
    }
    cin>>t1>>t2;
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
            if(a[i][j]==t1){
                x1=i,y1=j;
            }
            if(a[i][j]==t2){
                x2=i,y2=j;
            }
        }
    }
    if((max(x1,x2)-min(x1,x2)==1&&y1==y2)||(max(y1,y2)-min(y1,y2)==1&&x1==x2)){
        cout<<"Y";
    }
    else cout<<"N";
    return 0;
}

只得了一半分,救救我吧

2024/6/8 14:24
加载中...