- 题解
回形矩阵
- 2023-7-6 20:26:39 @
/*
* @Author: 莫春豪
* @Date: 2022-12-17 15:51:45
* @LastEditors: 莫春豪
* @LastEditTime: 2023-07-06 20:24:12
*/
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,m;
while(cin >> n >> m)
{
int a[15][15]={0};
for(int i = 0;i <= m + 1;i++)
{
a[0][i] = -1;//第0行
a[n+1][i] = -1;//第n+1行
}
for(int i = 0;i <= n + 1;i++)
{
a[i][0] = -1;//第0列
a[i][m + 1] = -1;//第m+1列
}
int x = 1,y = 1,f = 0;
// f == 0 往右
// f == 1 往下
// f == 2 往左
// f == 3 往上
int k = 1;
while(k <= n*m)
{
a[x][y] = k;
k++;
if(f == 0)
{
y++;
if(a[x][y] != 0)//如果填过数了
{
y--;//回退
x++;//转向
f = 1;
}
}
else if(f == 1)
{
x++;
if(a[x][y] != 0)
{
x--;
y--;
f = 2;
}
}
else if(f == 2)
{
y--;
if(a[x][y] != 0)
{
y++;
x--;
f = 3;
}
}
else if(f == 3)
{
x--;
if(a[x][y] != 0)
{
x++;
y++;
f = 0;
}
}
}
for(int i = 1;i <= n;i++)
{
for(int j = 1;j <= m;j++)
{
printf("%2d ",a[i][j]);
}
cout << endl;
}
}
return 0;
}
0 条评论
目前还没有评论...