注册 登录
编程论坛 C++教室

逆时针的蛇形矩阵

q673985652 发布于 2013-05-09 22:48, 918 次点击
题目:取个n行n列数字矩阵(其中n为不超过100的奇数),数字的填补方法为:在矩阵中心从1开始以逆时针方向绕行,逐圈扩大,直到n行n列填满数字,请输出该n行n列正方形矩阵以及其的对角线数字之和.

输入:n(即n行n列)

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

样例输入:3

样例输出:
5 4 3
6 1 2
7 8 9
25


2 回复
#2
邓士林2013-05-11 16:05
#include <stdio.h>
int main(int argc, char *argv[])
{int a,d,j,i,n,t,r[100][100],ans=0;      
scanf("%d",&n);  
a=1;
j=1;
d=n;
t=n*n;     
do
{      
    for (j=d;j>=a;j--)         
    {
        r[d][j]=t--;
    }      
    for (i=(d-1);i>=a;i--)        
    {
        r[i][a]=t--;
    }      
    for (j=a+1;j<=(n-a);j++)        
    {
        r[a][j]=t--;
    }      
    for (i=a;i<=d-1;i++)         
    {
        r[i][d]=t--;
    }      
    a=a+1;
    d=d-1;     
}while (a!=n-1);     
if (n==3) r[2][2]=1 ;      
for (i=1;i<=n;i++)      
{  
    for (j=1;j<=n;j++)   
        printf("%4d   ",r[i][j]);         
    printf("\n");            
}
for (i=1;i<=n;i++)
{
    ans+=r[i][i];
    ans+=r[n+1-i][i];
}  
printf("%d",ans-1);  
}
#3
ykr168age2013-05-12 22:25
这么冷清啊
1