不用找每行和的数学规律,不用开二维数组,也可以求出每行的和。
思路: 四个方向的优先级是→ ↓ ← ↑ ,在拐点会受到了正方形主对角线,辅对角线的限制而换方向,用此规律模拟出蛇形矩阵,内存限制不能开一个二维数组,但是模拟的过程中,你可以知道这个数是第几行的,累加到对应行的和即可。思路见图如下:
代码如下:
#include<stdio.h>
#include<iostream>
using namespace std;
const int maxn = 200005;
typedef long long ll;
// 4个方向的优先级 →↓←↑
int dx[4] = {
0,1,0,-1};
int dy[4] = {
1,0,-1,0};
ll sum[maxn] = {
0