先帮我看
  • 板块题目总版
  • 楼主Elden_Shadow
  • 当前回复1
  • 已保存回复1
  • 发布时间2025/2/7 15:29
  • 上次更新2025/2/7 17:29:47
查看原帖
先帮我看
1433572
Elden_Shadow楼主2025/2/7 15:29
#include<bits/stdc++.h>
using namespace std;
/*matrix函数是计算所求数的所在层数,再将上一层的最大数求出:
因为这一层的所有数都是在上一层的最大数的基础上累加起来的。
在通过它的方位进行累加,求出所求数*/
int matrix(int n,int i,int j){
    int k,sum,r1,r2,c1,c2;
    //k是所求数所在的层数
    k=min(min(i-1,j-1),min(n-i,n-j));
    //sum是第k层的最小数+1,也是外一层的最大数
    sum=4*k*(n-k);
    //四个变量是这层上、下、左、右边的行、列
    r1=k+1,r2=n-k,c1=k+1,c2=n-k;
    //判断
    if(i==r1)return sum+(j-c1+1);//上边
    else if(j==c2)return sum+(c2-c1+1)+(i-r1);//右边
    else if(i==r2)return sum+2*(c2-c1+1)+(c2-j);//下边
    else return sum+3*(c2-c1+1)+(r2-i);//左边
}
int main(){
    int n,i,j;
    cin>>n>>i>>j;
    cout<<matrix(n,i,j);
    return 0;
}

谁帮我调下???

2025/2/7 15:29
加载中...