题解 | 螺旋矩阵

螺旋矩阵

https://www.nowcoder.com/practice/c23363730308436394ec4e4dae3ff84c

#include <stdlib.h>
long long min(long long a, long long b, long long c, long long d){
    long long m = a;
    if( b < m ) m = b;
    if( c < m ) m = c;
    if( d < m ) m = d;
    return m;

}
int main() {
    long long n,m,i,j;
    scanf("%lld %lld %lld %lld", &n, &m, &i, &j);

    long long k = min(i-1, j-1, n-i,m-j);
    long long total_before = k * (2 * n + 2* m -4*k);

    long long w = m -2*k;
    long long h = n - 2* k;
    long long ans;
    if(w == 1){
        ans = total_before + (i-k);
    }else if (h == 1) {
        ans = total_before + (j - k);
    }else {
        if (i ==k+1) 
        {
            ans = total_before +(j-k);
        }else if (j == m-k) {
            ans = total_before + w + (i - k -1);
        }else if (i == n-k) {
            ans = total_before + w + h -1 + (m-k-j);
        }else {
            ans = total_before + w + h - 1 + w - 1 +(n-k-i);
        }
    }
    printf("%lld\n",ans);
    return 0;
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务