蓝桥杯B组 蛇形数
蓝桥杯B组蛇形数
#include <bits/stdc++.h> using namespace std; int a[100][100]; int main() { a[1][1] = 1; for (int i = 2; i <= 40 ; i ++) //操作的列数 { for (int j = 1, y = i; j <= i; j++, y --) //j为操作次数,y记录初始列号,容易看出第一列操作一次第二列操作两次 { if (i & 1) //判断奇偶列 // 奇数列判断是否是第一行 若是第一行则等于前一列的值+1,若不是则对角线+1 j == 1 ? a[y][j] = a[y - 1][j] + 1 : a[y][j] = a[y + 1][j - 1] + 1; //奇数列从下往上计算 有i列i行 每次向上走 行-1,列+1 所以是a[y + 1][j - 1] + 1 else // 偶数列判断是否第一列 若是第一列则等于上一列的值+1,若不是则对角线+1 j == 1 ? a[j][y] = a[j][y - 1] + 1 : a[j][y] = a[j - 1][y + 1] + 1; //偶数列从上往下计算 j正好为行 y为列, 每次向下走 行+1,列-1 所以是a[j - 1][j + 1] + 1; } } for (int i = 1; i <= 20; i ++) { for (int j = 1; j <= 20; j ++) printf("%d ", a[i][j]); printf("\n"); } printf("%d", a[20][20]); return 0; }

浙公网安备 33010602011771号