洛谷:P5731,P5732
作者:innno
P5731:【深基5.习6】蛇形方阵
题目描述
给出一个不大于 9 的正整数 n,输出 n*n的蛇形方阵。
从左上角填上 1 开始,顺时针方向依次填入数字,如同样例所示。注意每个数字有都会占用 3 个字符,前面使用空格补齐。
输入格式
输入一个正整数 n,含义如题所述。
输出格式
输出符合题目要求的蛇形矩阵。
样例 #1
样例输入 #1
4
样例输出 #1
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
提示
数据保证,1≤𝑛≤9。
P5731
/**
* ClassName: ${NAME}
* package: ${PACKAGE_NAME}
* Description:
* @Author: innno
* @Create: 2024/2/27 - 21:54
* @Version: v1.0
*/
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
ll num[100];
int main()
{
ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
ll n, b, c, z, v;
cin >> n;
ll x = (2 * n - 1) / 4, p = (2 * n - 1) % 4;
p != 0 ? (b = x + 1), p-- : b = x;
p != 0 ? (c = x + 1), p-- : c = x;
p != 0 ? (z = x + 1), p-- : z = x;
p != 0 ? (v = x + 1) : v = x;;
ll _b[b],_c[c], _z[z], _v[v];
ll _i = 0, _n = n - 1;
_b[0] = _n;
while (_n != 0)
{
_c[_i] = _n;
_z[_i] = _n;
_n -= 1;
if (_n != 0)
{
_v[_i] = _n;
_i++;
_b[_i] = _n;
_n -= 1;
}
}
ll value = 2;
ll key = 1;
num[1] = 1;
for (int j = 1; j <= x + 1; j++)
{
if (b >= 1)//+1
{
for (ll i = 0; i < _b[j-1]; i++)
{
num[key + i + 1] = value;
value++;
}
key = key + _b[j-1];
b--;
}
if (c >= 1)//+n
{
for (ll i = 0; i < _c[j-1]; i++)
{
num[key + (n * (i + 1))] = value;
value++;
}
key = key + (n * _c[j-1]);
c--;
}
if (z >= 1)//-1
{
for (ll i = 0; i < _z[j-1]; i++)
{
num[key - i - 1] = value;
value++;
}
key = key - _z[j-1];
z--;
}
if (v >= 1)//-n
{
for (ll i = 0; i < _v[j-1]; i++)
{
num[key - (n * (i + 1))] = value;
value++;
}
key = key - (n * _v[j-1]);
v--;
}
}
for (int i = 1; i <= n * n; i++)
{
cout << setw(3) << setfill(' ') << num[i];
if (i % n == 0)cout << '\n';
}
return 0;
}
P5732:【深基5.习7】杨辉三角
题目描述
给出n(n≤20),输出杨辉三角的前 n 行。
如果你不知道什么是杨辉三角,可以观察样例找找规律。
样例 #1
样例输入 #1
6
样例输出 #1
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
P5732
/**
* ClassName: ${NAME}
* package: ${PACKAGE_NAME}
* Description:
* @Author: innno
* @Create: 2024/2/27 - 21:54
* @Version: v1.0
*/
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
ll Triangle[21][21];
int main()
{
ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
ll n;
cin >> n;
for (ll i = 1; i <= n; i++)
{
Triangle[i][1] = 1;
}
Triangle[2][2] = 1;
for (ll i = 1; i <= n; i++)
{
for (ll j = 1; j <= i; j++)
{
if (j == 1)
{
cout << Triangle[i][j] << " ";
} else
{
Triangle[i][j] = Triangle[i - 1][j - 1] + Triangle[i - 1][j];
cout << Triangle[i][j] << " ";
}
}
cout << '\n';
}
return 0;
}