这题做了半天,才勉勉强强做出来,难啊!!!
如果大家不会做,对我来说很正常
幸好最后一点时间做出来了,题解写的不好别怪我,写得好点个赞吧!
思路
那些输入我不讲
循环,把每个矩阵要遍历的四个角用数组放起来
把数组排一下序
数组里的每个数减去下标为2的数(靠中),用一个数加起来
在循环外输出那个数,因为四个角一起循环4遍,所以要除4
记得每次要换行哦
代码加注释
#include<bits/stdc++.h>
using namespace std;
int main(){
int t,n,m,a[101][101],x[5];
long long s;//要开long long,结果可能很大
cin>>t;//输入
for(int i=1;i<=t;i++){
cin>>n>>m;//输入
s=0;//每一次都要附初始值
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>a[i][j];//输入
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++){
x[1]=a[i][j];//遍历i,j
x[2]=a[i][m-j+1];//遍历与j相对的
x[3]=a[n-i+1][j];//遍历与i相对的
x[4]=a[n-i+1][m-j+1];//遍历与i相对、与j相对的
//它们就是遍历四个角
sort(x+1,x+1+4);//排序
for(int k=1;k<=4;k++)
s+=abs(x[k]-x[2]);//s加上x[k]减去x[2](靠中)
}
cout<<s/4<<endl;//因为矩阵每个角都遍历过,所以要除4
}
return 0;
}
让大家看得更好,这是代码文献
#include<bits/stdc++.h>
using namespace std;
int main(){
int t,n,m,a[101][101],x[5];
long long s;
cin>>t;
for(int i=1;i<=t;i++){
cin>>n>>m;
s=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>a[i][j];
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++){
x[1]=a[i][j];
x[2]=a[i][m-j+1];
x[3]=a[n-i+1][j];
x[4]=a[n-i+1][m-j+1];
sort(x+1,x+1+4);
for(int k=1;k<=4;k++)
s+=abs(x[k]-x[2]);
}
cout<<s/4<<endl;
}
return 0;
}
大家如果觉得有帮助,帮忙点个赞,谢谢!
坤坤真强
小黑子树枝不错(^▽^)
现在还一个一个写谁资瓷了吗……
这不就是中位数吗
是吗。。。可能当时我太菜了
感谢 龚子昂 的支持
感谢 Tr1ppieR4dd. 的支持
感谢 黑炭保安 的大力支持
感谢 Seven_93 的大力支持
感谢 北辰呀 的大力支持
感谢 codedog 的大力支持
感谢 凌乱之风 的大力支持
感谢 gomike2021 的大力支持
感谢
Vergissmeinnicht 的大力支持
凌乱之风 ok,已修改
####$建议循环变量换成k$
感谢提醒!(感觉我回复的有点慢)
感谢 今天AC了吗giao 对我的题解的大力支持