欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > 东方博宜 24年10月-A组(萌新) - 占卜

东方博宜 24年10月-A组(萌新) - 占卜

2025/3/13 11:59:23 来源:https://blog.csdn.net/kuaidihezi/article/details/143014479  浏览:    关键词:东方博宜 24年10月-A组(萌新) - 占卜

题目描述

小 A 是一个非常迷信的人,他有一块占卜用的魔法板,通过这块 n 行 m 列的矩形魔法板可以预知一些未来发生的事情。
他在出门前都会占卜一下今天是否会刮风或者下雨。
如果魔法板上的图案沿着水平中轴线翻转,得到的图案和原来一样,说明今天会刮风。所谓水平中轴线,指的是,当 nn 为奇数,指的是第 (n+1)/2 行;当 n 为偶数,指的是第 n/2行和第 n/2+1 行之间的直线。
竖直对称时说明今天会下雨,竖直对称的定义和水平对称的定义类似。
请根据魔法板输出占卜的结果。

输入

输入的第一行是两个整数 n 和 m。
接下来的 n 行,每行有个 m 字符,每个字符是 0 或者 1。

输出

输出只有一行。
如果矩形板既是水平对称又是竖直对称,输出 Both。
如果矩形板只是水平对称,输出 Wind。
如果矩形板只是竖直对称,输出 Rain。
如果矩形板不对称,输出 Neither。

样例

输入

1 1
1

输出

Both

输入

2 3
101
000

输出

Rain

输入

3 3
100
010
001

输出

Neither

说明

样例 1 解释

图形既是水平对称又是竖直对称,所以输出Both。

数据范围

1≤n,m≤500。

C++

#include <iostream>
#include <vector>
#include <string>using namespace std;bool isHorizontalSymmetric(vector<string>& board) {int n = board.size();for (int i = 0; i < n / 2; i++) {if (board[i] != board[n - i - 1]) {return false;}}return true;
}bool isVerticalSymmetric(vector<string>& board) {int n = board.size();int m = board[0].length();for (int i = 0; i < n; i++) {for (int j = 0; j < m / 2; j++) {if (board[i][j] != board[i][m - j - 1]) {return false;}}}return true;
}int main() {int n, m;cin >> n >> m;vector<string> board(n);for (int i = 0; i < n; i++) {cin >> board[i];}bool horizontalSymmetric = isHorizontalSymmetric(board);bool verticalSymmetric = isVerticalSymmetric(board);if (horizontalSymmetric && verticalSymmetric) {cout << "Both" << endl;} else if (horizontalSymmetric) {cout << "Wind" << endl;} else if (verticalSymmetric) {cout << "Rain" << endl;} else {cout << "Neither" << endl;}return 0;
}

首先,我们定义了两个辅助函数isHorizontalSymmetricisVerticalSymmetric

isHorizontalSymmetric函数用于判断矩形板是否水平对称。它接受一个字符串向量board作为参数,表示矩形板的每一行。我们首先获取矩形板的行数n。然后,我们遍历前一半的行数,将当前行与对称的行进行比较,如果不相等则返回false,表示矩形板不是水平对称的。如果遍历完所有行都符合水平对称的条件,则返回true

isVerticalSymmetric函数用于判断矩形板是否竖直对称。它也接受一个字符串向量board作为参数,表示矩形板的每一行。我们首先获取矩形板的行数n和列数m。然后,我们嵌套遍历每一个格子,对称地比较当前格子与对称的格子的值,如果不相等则返回false,表示矩形板不是竖直对称的。如果遍历完所有格子都符合竖直对称的条件,则返回true

main函数中,我们首先读入输入的两个整数nm,表示矩形板的行数和列数。

接下来,我们定义一个字符串向量board,用于存储矩形板的每一行的字符串。

然后,我们通过一个循环读入每一行的字符串,并将其存入board中。

接下来,我们调用isHorizontalSymmetric函数和isVerticalSymmetric函数分别判断矩形板是否水平对称和竖直对称,得到两个布尔值。

最后,根据水平对称和竖直对称的情况,输出相应的结果。如果既水平对称又竖直对称,输出"Both";如果只是水平对称,输出"Wind";如果只是竖直对称,输出"Rain";如果不对称,输出"Neither"。

这样,我们完成了根据魔法板输出占卜结果的程序。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词