AcWing 756. 蛇形矩阵
原题链接
简单
作者:
Dimension
,
2021-01-11 17:44:45
,
所有人可见
,
阅读 233
C++ 代码
#include <iostream>
#include <stdlib.h>
using namespace std;
void getss(int n, int m, int floor)
{
int snack_arr[100][100] = { 0 };
int num = 1;
int floor_temp = floor;
while (floor_temp != 0)
{
int time = floor - floor_temp;
for (int j = time; j != m - time - 1; j++)//上
if (snack_arr[time][j] == 0)
{
snack_arr[time][j] = num++;
}
else
{
break;
}
for (int i = time, j = m - time - 1; i != n - time - 1; i++)//最右
if (snack_arr[i][j] == 0) {
snack_arr[i][j] = num++;
}
else
{
break;
}
for (int j = m - time - 1; j != time; j--)//最下
if (snack_arr[n - time - 1][j] == 0)
{
snack_arr[n - time - 1][j] = num++;
}
else
{
break;
}
for (int i = n - time - 1; i != time; i--)//最左
if (snack_arr[i][time] == 0) {
snack_arr[i][time] = num++;
}
else
{
break;
}
floor_temp--;
}
if (n % 2 != 0 && m % 2 != 0 && snack_arr[n / 2][m / 2] == 0)
snack_arr[n / 2][m / 2] = num++;
for (int i = 0; i != n; i++)
{
for (int j = 0; j < m; j++)
{
cout << snack_arr[i][j] << " ";
}
cout << endl;
}
}
int main(int argc, char const *argv[]) //主函数,负责调用
{
int array_size, array_sizee;
cin >> array_size >> array_sizee;
int floor;
if (array_size % 2 == 0)
floor = array_size / 2;
else floor = array_size / 2 + 1;
getss(array_size, array_sizee, floor);
return 0;
}