B - Same Map in the RPG World

第五周任务 [Cloned] - Virtual Judge (vjudge.net)

【题目描述】

高桥正在开发一款RPG。他决定编写一个代码来检查两个地图是否相等。

我们有网格,水平行和垂直列。网格中的每个单元格都有一个符号或上面写着一个符号。
写在单元格上从顶部开始的第 -行和从左起的第 -列上的符号分别用 和 表示。​

以下两个操作称为垂直移位水平移位。

  • 对于每个 ,同时执行以下操作:j=1,2,…,W
    • 同时替换A1,j​,A2,j​,…,AH−1,j​,AH,j
    • A2,j​,A3,j​,…,AH,j​,A1,j
  • 对于每个 ,同时执行以下操作:i=1,2,…,H
    • 同时替换为 。Ai,1​,Ai,2​,…,Ai,W−1​,Ai,W
    • Ai,2​,Ai,3​,…,Ai,W​,Ai,1​

是否有一对满足以下条件的非负整数?如果有,请打印,否则。(s,t)YesNo

  • 应用垂直移位次数和水平移位次数后

这里,据说等于当且仅当对于所有整数对,使得 和 。Ai,j​=Bi,(i,j)1≤iH  1≤jW

【输入】

  • 2≤H,W≤30
  • Ai,j​是 '#'或‘.’ ,Bi,j也是 
  • H并且是整数。W

【输出】

如果有符合的整数对,则打印Yes;否则打印No。

解题思路

这个题可以用暴力解,用到了string中的substr函数。

将两个图分别存入a数组和b数组,将a数组向右补全一个数组作为c数组。

用截取的c数组与b数组比较,其中截取要用到substr函数。

c[5].substr(n,m);//表示从n位置开始截取m个字符(空格也算字符)

c[5].substr(5);//表示从5位置往后截取到最后

c[5].substr(-5);//表示从倒数第五个位置开始截取到最后

 如果截取的一行c数组与b数组的一行相等,就按照这个截取的位置,将其余行的c数组截取放在d数组。循环截取完后,用b数组逐行与d数组比较,如果全部相等,就输出Yes,不相等则继续遍历,直至所有循环结束,未找到相等的就输出No。

代码如下


#include<iostream>
using namespace std;
string a[35], b[35], c[35], d[35];
int main() {
	int n, m;
	cin >> n >> m;
	//将输入的图存入a[n],并补一个图放在右边存入c[n]
	for (int i = 0; i < n; i++) {
		cin >> a[i];
		c[i] = a[i] + a[i];
	}
	//第二个图存入b[n]
	for (int i = 0; i < n; i++)
		cin >> b[i];
	//遍历c[n]数组的行和列
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < 2 * m; j++) {
			//遍历b[n]数组的行
			for (int k = 0; k < n; k++) {
				//如果截取的一行c数组与b数组的一行相等
				//就按照这个截取的位置将其余的c数组截取放在d数组
				//注意截取的顺序(从当前位置往后找,再从q=0处往当前位置找)
				if (c[i].substr(j, m) == b[k]) {
					int ans = 0;
					for (int q = i; q < n; q++) {
						d[ans] = c[q].substr(j, m);
						ans++;
					}
					for (int q = 0; q < i; q++) {
						d[ans] = c[q].substr(j, m);
						ans++;
					}
					int flag = 0;
					//接着找截取的d数组是否满足题意
					for (int q = 0; q < n; q++) {
						if (b[q] != d[q]) {
							flag = 1;
						}
					}
					if (flag == 0) {
						cout << "Yes" << endl;
						return 0;
					}
				}
			}
		}
	}
	cout << "No" << endl;
}

### 回答1: 这个错误提示通常是因为你的设备已经连接到了网络,但是又尝试重新连接,此时网络路由器会认为你的设备是重复的,因为它使用了相同的 MAC 地址。你可以尝试断开网络连接,重新启动设备,然后再次连接到网络。如果问题仍然存在,你可以尝试在路由器的设置中重置网络连接。如果这些方法都无法解决问题,你可能需要联系网络管理员或路由器制造商寻求帮助。 ### 回答2: “Static on-line user with the same mac exists” 可能是指在网络上存在相同的MAC地址的静态在线用户。MAC地址是一种用于标识网络设备的唯一地址。在这种情况下,可能有两个或多个设备具有相同的MAC地址,这可能会导致网络故障或连接问题。 要解决这个问题,我们可以采取以下步骤: 1. 确认问题:首先,我们需要确认确实存在相同的MAC地址。可以通过查看网络设备的配置或日志来确定。如果确实存在相同的MAC地址,则必须确定哪些设备具有相同的地址。 2. 找到冲突设备:一旦确定了存在相同MAC地址的设备,我们需要找到它们,并检查是否存在配置错误或网络异常。这可能需要使用跟踪工具(例如Ping)来确定设备的位置。 3. 修改或更新MAC地址:为了消除冲突,我们可以修改或更新设备的MAC地址。这可以通过更改设备的网络配置或重新安装设备驱动程序来完成。确保为每个设备分配唯一的MAC地址。 4. 重启网络设备:在修改或更新MAC地址后,建议重启网络设备,以确保更改生效。这可能需要重启交换机、路由器或其他网络设备。 5. 配置网络设备:最后,我们需要对网络设备进行正确的配置,以确保没有重复的MAC地址。这包括了为每个设备分配唯一的IP地址,避免在同一网络上分配相同的MAC地址。 通过上述步骤,我们应该能够解决“Static on-line user with the same mac exists”的问题,并确保网络上没有重复的MAC地址。 ### 回答3: “Static on-line user with the same mac exists”这句话是网络管理中经常出现的错误或警告信息。它表示在网络中存在具有相同MAC地址的静态在线用户。 MAC地址是一种用于在局域网中唯一标识网络接口的地址。当网络管理系统检测到有两个以上的设备拥有相同的MAC地址时,就会出现这个错误信息。 这种情况可能是由以下原因引起的: 1. 克隆MAC地址:某些用户可能试图通过将自己设备的MAC地址设置为其他设备的地址来隐藏其真实身份。这样做可能导致网络管理系统检测到有两个具有相同MAC地址的设备在线,从而产生这个错误信息。 2. 网络故障:在某些情况下,网络中的设备可能因为网络故障或无法正确分配IP地址而导致具有相同MAC地址的设备在线。 要解决这个问题,可以采取以下步骤: 1. 调查MAC地址冲突:管理员需要检查网络中所有设备的MAC地址,确保没有重复的地址。 2. 重新分配IP地址:如果网络中的设备因为IP地址冲突而具有相同的MAC地址在线,重新分配IP地址可能是解决问题的方法。 3. 设置MAC地址安全性策略:管理员可以设置网络设备的MAC地址安全性策略,以避免不同设备使用相同的MAC地址。 4. 防止MAC地址克隆:网络管理系统可以实施一些安全机制,防止用户克隆其他设备的MAC地址来隐藏其真实身份。 综上所述,“Static on-line user with the same mac exists”表示网络中存在具有相同MAC地址的静态在线用户,管理员需要采取相应的措施来解决该问题,以确保网络正常运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

明里灰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值