螺旋矩阵(c++)
上厕所也要穿校服:
楼主的确实不能完成奇数阶的螺旋矩阵生成,我的解决办法是对一开始就对奇数偶数阶螺旋矩阵分类:偶数阶的按楼主的来,奇数阶就是令i = (m+1)/2即可。以下是我的代码
#include
using namespace std;
#define max 100
int main()
{
int m, n, i, j;
cin >> m >> n;
int a[max][max] = { 0 };
int num = 1;
if (m % 2 == 0)
{
for (i = 0; i < m / 2; i++)
{
for (j = i; j < n - i; j++)
a[i][j] = num++;
for (j = i + 1; j < m - i; j++)
a[j][n - i - 1] = num++;
for (j = n - i - 2; j > i; j--)
a[m - i - 1][j] = num++;
for (j = m - i - 1; j > i; j--)
a[j][i] = num++;
}
}
else
{
for (i = 0; i < (m+1) / 2; i++)
{
for (j = i; j < n - i; j++)
a[i][j] = num++;
for (j = i + 1; j < m - i; j++)
a[j][n - i - 1] = num++;
for (j = n - i - 2; j > i; j--)
a[m - i - 1][j] = num++;
for (j = m - i - 1; j > i; j--)
a[j][i] = num++;
}
}
for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++)
cout |