算法刷题记录:蛇形矩阵
题目链接
https://ac.nowcoder.com/acm/contest/19306/1027
题目分析
画图模拟就完事了,分成了四类
上半部分
1.x在第1
行上:x先左再下,直到y等于1。
2.y在第1
行上:y先下再上,直到x等于1。
下半部分
3.x在第n
行上:x先左再上,直到y等于n。
4.y在第n
行上:y先下再左,直到x等于n。
AC代码
#include <iostream>
using namespace std;
int n, cnt;
int w[1005][1005];
int main()
{
cin >> n;
int dx = 1, dy = 1;
w[dx][dy] = ++ cnt;
// int m = 6;
while (1)
{
if (w[n][n]) break;
if (dx == 1 && dy != n)
{
w[dx][ ++ dy] = ++ cnt;
while (dy > 1) w[ ++ dx][ -- dy] = ++ cnt;
}
else if (dy == 1 && dx != n)
{
w[++ dx][dy] = ++ cnt;
while (dx > 1) w[ -- dx][ ++ dy] = ++ cnt;
}
else if (dx == n)
{
w[dx][ ++ dy] = ++ cnt;
while (dy < n) w[ -- dx][ ++ dy] = ++ cnt;
}
else if (dy == n)
{
w[ ++ dx][dy] = ++ cnt;
while (dx < n) w[ ++ dx][ -- dy] = ++ cnt;
}
}
for (int i = 1; i <= n; ++ i)
{
for (int j = 1; j <= n; ++ j)
cout << w[i][j] << ' ';
cout << endl;
}
}
本文来自博客园,作者:想个昵称好难ABCD,转载请注明原文链接:https://www.cnblogs.com/ClockParadox43/p/17438333.html