目录
输入n,将自然数1~n2按螺旋填入n×n的矩阵
- #include
- using namespace std;
- const int N=1e4+10;
- int n,a[N][N];
-
- int main()
- {
- cin>>n;
- int num=1,cnt=0;
- while(1)
- {
- if(n==1)
- {
- a[0][0]=num;
- break;
- }
- //如图 1 2 3
- for(int j=cnt;j
1;j++) - for(int i=cnt;i
-1-cnt;i++) - {
- a[i][j]=num;
- num++;
- }
- //如图 4 5 6
- for(int i=n-1-cnt;i
- for(int j=cnt;j
-1-cnt;j++) - {
- a[i][j]=num;
- num++;
- }
- //如图 7 8 9
- for(int j=n-1-cnt;j
- for(int i=n-cnt-1;i>cnt;i--)
- {
- a[i][j]=num;
- num++;
- }
- //如图 10 11 12
- for(int i=cnt;i
1;i++) - for(int j=n-1-cnt;j>cnt;j--)
- {
- a[i][j]=num;
- num++;
- }
-
- cnt++;//一圈完
-
- if(cnt==n/2)
- {
- if(n%2) a[n/2][n/2]=num; //如果n为奇数 则要把最后那个数填入矩阵中间
- break;
- }
- }
-
- //输出矩阵
- for(int i=0;i
- {
- cout<<'[';
- for(int j=0;j
- {
- if(j!=3) cout<<',';
- }
- cout<<']'<
- }
-
- return 0;
- }
顺时针螺旋矩阵:
- int a[n][n];
- int up = 0, down = n - 1, left = 0, right = n - 1, index = 1;
- while(index <= n * n)
- {
- for(int i=left;i<=right;i++)
- a[up][i] = index++;
-
- up++;
- for(int i = up; i <= down; i++)
- a[i][right] = index++;
-
- right--;
- for(int i = right; i >= left; i--)
- a[down][i] = index++;
-
- down--;
- for(int i = down; i >= up; i--)
- a[i][left] = index++;
-
- left++;
- }
-
相关阅读:
.NET 6上的WebView2体验
C语言学生成绩管理系统
const修饰详解
HyBird App(混合应用)核心原理JSBridge
Android系统源码在线阅读(Android4.4~Android13.0)
mfc140.dll是什么文件?如何修复mfc140.dll丢失的方法分享
RabbitMQ------发布确认高级(消息回调、回退、备份交换机)(八)
家用电器行业B2B供应链集采管理系统:严格把控供应商,降低采购成本
ZCMU--5115: Buying Keys(C语言)
R语言确定聚类的最佳簇数:3种聚类优化方法
-
原文地址:https://blog.csdn.net/weixin_61639349/article/details/126651017