(模拟) codeVs1160 蛇形矩阵

mac2022-06-30  50

题目描述  Description

小明玩一个数字游戏,取个n行n列数字矩阵(其中n为不超过100的奇数),数字的填补方法为:在矩阵中心从1开始以逆时针方向绕行,逐圈扩大,直到n行n列填满数字,请输出该n行n列正方形矩阵以及其的对角线数字之和.

输入描述  Input Description

n(即n行n列)

输出描述  Output Description

n+1行,n行为组成的矩阵,最后一行为对角线数字之和

样例输入  Sample Input

3

样例输出  Sample Output

5 4 36 1 27 8 925

  模拟题 注意每次到了增加一圈时,用来判断是否到边界的数要增加2 参考链接 https://blog.csdn.net/zsc2014030403015/article/details/46961725 C++代码: #include<iostream> #include<cstdio> using namespace std; int a[102][102]; int main(){ int n; cin>>n; int i = n/2; int j = n/2; int m = n*n; int cnt = 1; a[i][j] = cnt++; int f = 0; int ff; while(cnt<=m){ f+=2; j++; ff = f; while(ff--){ a[i][j] = cnt++; if(ff)i--; } ff = f; j--; while(ff--){ a[i][j] = cnt++; if(ff)j--; } ff = f; i++; while(ff--){ a[i][j] = cnt++; if(ff)i++; } ff = f; j++; while(ff--){ a[i][j] = cnt++; if(ff)j++; } } int sum = 0; for(int i = 0; i < n; i++){ for(int j = 0; j< n; j++){ cout<<a[i][j]<<" "; if(i == j || i + j == n-1){ sum+=a[i][j]; } } cout<<endl; } cout<<sum<<endl; return 0; }

 

转载于:https://www.cnblogs.com/Weixu-Liu/p/10630263.html

相关资源:JAVA上百实例源码以及开源项目
最新回复(0)