您的位置:首页 > 其它

蛇形矩阵

2016-04-10 19:02 183 查看
思想:从外到内每次打印一个正方形

#include<cstdlib>
#include<iostream>
using namespace std;

int main()
{
int n,i,j;
cin >> n;
int k;
int s=1;
int **m;
//m = (int **)malloc(n*sizeof(int*));//c二维数组动态分配内存
//for (k = 0; k < n; k++)
//{
// m[k] = (int*)malloc(n*sizeof(int));
// memset(m[k], 0, n*sizeof(int));
//}

m = new int*
;//c++二维数组动态分配内存
for (k = 0; k < n; k++)
{
m[k] = new int[10];
memset(m[k], 0, n*sizeof(int));//初始化为0
}

i = j = 0;

for (k = n; k >= 1; k=k-2)//从外到内每次赋值一个正方形
{
for (int a = 1; a <= k; a++)//第一条边:从左到右
{
m[i][j] = s;
j++;
s++;
}
j--;
i++;
for (int b = 1; b <= k-1; b++)//第二条边:从上到下
{
m[i][j] = s;
s++;
i++;
}
i--;
j--;
for (int c = 1; c <= k-1; c++)//第三条边:从右到左
{
m[i][j] = s;
s++;
j--;
}
j++;
i--;
for (int d = 1; d <=k-2; d++)//第四条边:从下到上
{
m[i][j] = s;
s++;
i--;
}
i++;
j++;

}
for (i = 0; i < n; i++)//打印矩阵
{
for (j = 0; j < n; j++)
cout << m[i][j] << " ";
cout << endl;
}
//for (k = 0; k < n; k++)//c释放内存
//{
// free(m[k]);
//}
//free(m);
for (k = 0; k < n; k++)//c++释放内存
{
delete[] m[k];
}
delete[] m;

system("pause");
return 0;

}

运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: