【白银组】codevs_1160 蛇形矩阵

#include <iostream>
using namespace std;
#define M 100
int a[M][M];

void pt( int n )
{
	for ( int i = 0; i < n; i++ )
	{
		for ( int j = 0; j < n; j++ )
		{
			cout << a[i][j] << " ";
			//printf("%2d ",a[i][j]);
		}
		cout << endl;
	}
}

/* 圆圈循环 */
int main()
{
	int n = 5;
	cin>>n; 
	int sn = n * n;
	a[n/2][n/2]=1;
	for ( int i = 1; i <n/2+1; i++ )
	{
		for ( int j = n - i; j >= i-1; j-- )
		{
			a[n - i][j] = sn--;
		}
		for ( int j = n - i; j > i; j-- )
		{
			a[j - 1][i-1] = sn--;
		}
		for ( int j = i-1; j <= n - i; j++ )
		{
			a[i-1][j] = sn--;
		}
		for ( int j = i; j <n - i; j++ )
		{
			a[j][n-i] = sn--;
		}
	}
	pt(n);
	int sum=0;
	for(int i=0;i<n;i++)
	{
		sum+=a[i][n-1-i];
		sum+=a[i][i];
	} 
	cout<<sum-1<<endl;
	return(0);
}

 

由于对数据的不熟练,已经忘记了大多数的步骤了,需要学习的还有很多。

可以在Excel中方便的进行操作。展示自己的操作过程。

四个边对应起来看,可以更加方便的进行,对比。for循环难点在于变量的变化过程的把控,通过具体的对比会方便很多的。

 

posted @ 2018-07-01 16:52  源头活水  阅读(149)  评论(0编辑  收藏  举报