您的位置:首页 > 其它

打印螺旋数阵的一种实现

2013-12-08 23:32 204 查看
#include <iomanip>
#include <iostream>
const int N = 5;
int arr

;
int main()
{
int var = N;
int count = 0;
int i = 0;
int j = 0;
int k = 0;

while(var > 0)
{
for(k=0; k<var; k++)
{
arr[i][j++] = ++count;
}
var--;
j--;

for(k=0; k<var; k++)
{
arr[++i][j] = ++count;
}
for(k=0; k<var; k++)
{
arr[i][--j] = ++count;
}
var--;
for(k=0; k<var; k++)
{
arr[--i][j] = ++count;
}
j++;
}

for(i=0; i<N; i++)
{
for(j=0; j<N; j++)
{
cout<<setw(2)<<arr[i][j]<<" ";
}
cout<<endl;
}

return 0;
}

结果如下:



类似的另外一种实现:

const int N = 6;
int a

;
int main()
{
int i = 0;
int j = 0;
int count = 0;
int num = (N+1) / 2;
int numin = N-1;
int x = 0;
int y = 0;
for(i=0; i<num; i++)
{
for(j=0; j<numin; j++)
{
a[x][y++] = ++count;
}
for(j=0; j<numin; j++)
{
a[x++][y] = ++count;
}
for(j=0; j<numin; j++)
{
a[x][y--] = ++count;
}
for(j=0; j<numin; j++)
{
a[x--][y] = ++count;
}
x++;
y++;
numin -= 2;
if(numin == 0)
{
a[x][y] = ++count;
break;
}
}

for(i=0; i<N; i++)
{
for(j=0; j<N; j++)
{
printf("%2d ", a[i][j]);
}
printf("\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: