求助!【洛谷】B3653 [语言月赛202208] 俊俏地鼠的远亲


我真的是怎么也不知道哪里不符合题目要求,希望大家不吝赐教,指点一下。  (T▽T)

#include <iostream>
using namespace std;
long long A[50][50] = { 0 }, B[50][50] = { 0 };
int s(int a, int b, int c, int d);
int main()
{
	int n, m, i, j, I, J, t;
	cin >> n >> m;
	for (i = 0; i < n; i++)
	{
		for (j = 0; j < m; j++)
			cin >> A[i][j];
	}
	for (i = 0; i < n; i++)
	{
		for (j = 0; j < m; j++)
		{
			t = 0;
			for (I = 0; I < n; I++)
			{
				for (J = 0; J < m; J++)
				{
					if (A[i][j] == A[I][J])
					{
						t = s(i, j, I, J);
						if (t > B[i][j])
						{
							B[i][j] = B[I][J] = t;
						}
					}
				}
			}
		}
	}
	for (i = 0; i < n; i++)
	{
		for (j = 0; j < m; j++)
			cout << B[i][j] << " ";
		if (j < m - 1)
			cout << "\n";
	}
	return 0;
}
int s(int a, int b, int c, int d)
{
	int L;
	L = (a - c) * (a - c) + (b - d) * (b - d);
	return L;
}

  • 输入数组维度与元素值
    • 首先通过 cin 从标准输入读取两个整数 n 和 m,分别表示二维数组 A 的行数和列数。
    • 接着使用两层嵌套的循环遍历数组 A 的每一个位置,通过 cin 读取每个位置的元素值,并将其存储到数组 A 中。
  • 处理数组 A 并更新数组 B
    • 然后使用四层嵌套的循环来处理数组 A。对于数组 A 中的每一个元素 A[i][j],通过内层的两层嵌套循环(遍历 I 和 J)遍历整个数组 A,检查是否存在与 A[i][j] 相等的元素 A[I][J]
    • 当找到相等元素时,调用函数 s 计算一个值 t(计算的是基于元素位置的平方距离值)。
    • 如果计算得到的 t 值大于当前 B[i][j] 的值,就将 B[i][j] 和 B[I][J] 都更新为 t
  • 输出数组 B
    • 最后使用两层嵌套的循环遍历数组 B 的每一个位置,通过 cout 将每个位置的元素值输出到标准输出。
    • 在每行输出结束时(除了最后一行),如果当前列数 j 小于列数 m - 1,就输出一个换行符 \n,以保证每行元素输出后换行。
      函数 s 的实现
      int s(int a, int b, int c, d)
      {
          int L;
          L = (a - c) * (a - c) + (b - d) * (b - d);
          return L;
      }
      
    • 函数 s 实现了计算平面上两点(由参数 ab 和 cd 分别表示这两点的横纵坐标)之间的平方距离的功能。
    • 通过公式 (a - c)^2 + (b - d)^2 计算得到这个平方距离值,并将其作为函数的返回值返回。

      到底哪不符合题目要求啊...╥﹏╥

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值