博客日历
2024年12月 | ||||||
一 | 二 | 三 | 四 | 五 | 六 | 七 |
25 | 26 | 27 | 28 | 29 | 30 | 1 |
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
存档
2024年03月 04月 05月 2021年
01月 02月 11月 12月 2020年
02月 03月 04月 05月 06月 07月
09月 2018年
09月 2017年
01月 02月 07月 2016年
01月 04月 07月 08月 11月 12月
2015年
01月 02月 03月 05月 09月 10月
11月 2014年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2013年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2012年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2011年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2010年
01月 02月 03月 04月 05月 06月
07月 08月 09月 10月 11月 12月
2009年
03月 04月 05月 06月 07月 08月
09月 10月 11月 12月
面试题练习:输出螺旋矩阵
// 螺旋矩阵 http://baike.baidu.com/view/9949924.htm
void PrintHelixMatrix(int N)
{
// 螺旋矩阵中增长的数字,填满后正好等于N*N
int num=0;
// 定义N*N矩阵并填充
int *matrixData=new int[N*N];
// 四个边界
int left=0,top=0,right=N-1,bottom=N-1;
// 当前行和列
int row=0,col=0;
// 由外至内,填充矩阵
while(num != N*N)
{
// →
for (col=left;col<=right;col++)
{
matrixData[row*N+col]=++num;
}
col--;
// ↓
for (row=top+1;row<=bottom;row++)
{
matrixData[row*N+col]=++num;
}
row--;
// ←
for (col=right-1;col>=left;col--)
{
matrixData[row*N+col]=++num;
}
col++;
// ↑
for (row=bottom-1;row>top;row--)
{
matrixData[row*N+col]=++num;
}
row++;
// 边界向内移动
top++;
left++;
right--;
bottom--;
}
// 输出此矩阵
for (int i=0;i<N;i++)
{
for(int j=0;j<N;j++)
{
// 3位右对齐
printf("%3d ",matrixData[i*N+j]);
}
printf("\n");
}
delete[] matrixData;
printf("\n");
}
int _tmain(int argc, _TCHAR* argv[])
{
PrintHelixMatrix(1);
PrintHelixMatrix(5);
PrintHelixMatrix(7);
return 0;
}
上一篇: 压缩vmware虚拟磁盘
下一篇: 对Notepad++外观的一点小修改
分类:Win32/C++ 查看次数:4193 发布时间:2013/8/1 10:27:34