分治的思想真有些神奇。。。
<span style="font-family:Courier New;font-size:18px;">#include <iostream>
using namespace std;
const int maxn=20;
int a[maxn][maxn];
void draw(int x,int y,int start,int size)
{
if(size<=0) return;
int t1=x,t2=y;
for(int i=x;i<t1+size-1;i++){
a[i][y]=start;
start++;
}
x=t1+size-1;
for(int j=y;j<t2+size-1;j++) {
a[x][j]=start;
start++;
}
y=t2+size-1;
for(int i=x;i>t1;i--) {
a[i][y]=start;
start++;
}
x=t1;
for(int j=y;j>t2;j--) {
a[x][j]=start;
start++;
}
x=t1+1;
y=t2+1;
draw(x,y,start,size-2);
}
int main()
{
int n;
cin>>n;
draw(0,0,1,n);
for(int i=0;i<n;i++) {
for(int j=0;j<n;j++) {
cout<<a[i][j]<<" ";
}
cout<<endl;
}
return 0;
}</span>
本文介绍了一种使用分治法思想生成螺旋矩阵的方法。通过递归地将矩阵分为四个部分,并逐步填充数字来实现。文章包含完整的 C++ 代码实现,展示了如何从矩阵的一个角开始,沿螺旋路径填充数字。
330

被折叠的 条评论
为什么被折叠?



