螺旋矩阵,求对角线之和

线代知识:https://blog.youkuaiyun.com/qq_45716514/article/details/103434574

螺旋矩阵

#include <stdio.h>
int main(void)
{
	int c=1,x=0, y=0,n, a[10][10]={0};
	scanf("%d", &n);
	a[x][y] = 1;
	while(n*n!=c)
	{
	    while(y+1<n && !a[x][y+1] )
		     a[x][++y] = ++c;
		while(x+1<n  && !a[x+1][y])
		     a[++x][y] = ++c;
		while(y-1>=0  && !a[x][y-1])
		     a[x][--y] = ++c;
		while(x-1>=0 && !a[x-1][y])
		     a[--x][y] = ++c;
    }
	for(x=0;x<n;x++)
	{ 
	   for(y=0;y<n;y++)
	   	{
	   		printf("%3d", a[x][y]);
		}
	   	printf("\n");
    }
 } 

对角线之和

站在数学角度看代码会有重复点,但代码执行不会有重复点。因为对于代码而言方阵中的元素只遍历了一次,不会有重复点

#include <stdio.h>
int sum(int a[10][10],int n)//求主对角线之和 
{
	int i,j,s=0;
	for(i=0;i<n;i++)
		for(j=0;j<n;j++)
			if(i==j||i+j==n-1)
				s+=a[i][j];
	return s;
}
int main(void)
{
	int c=1,x=0, y=0,n, a[10][10]={0};
	int cnt1=0,cnt2=0;
	scanf("%d", &n);
	a[x][y] = 1;
	while(n*n!=c)
	{
	    while(y+1<n && !a[x][y+1] )
		     a[x][++y] = ++c;
		while(x+1<n  && !a[x+1][y])
		     a[++x][y] = ++c;
		while(y-1>=0  && !a[x][y-1])
		     a[x][--y] = ++c;
		while(x-1>=0 && !a[x-1][y])
		     a[--x][y] = ++c;
    }
	cnt=sum(a,n);
	printf("%d",cnt);
 }

祝学习愉快。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值