螺旋矩阵,求对角线之和

线代知识:https://blog.csdn.net/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);
 }

祝学习愉快。

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 书香水墨 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读