设为首页 加入收藏

TOP

NYOJ_33 蛇形填数(蛇形矩阵)
2015-11-21 01:02:05 来源: 作者: 【 】 浏览:2
Tags:NYOJ_33 蛇形 矩阵

?

分析:

本题重点是分析矩阵。一开始看错了蛇,得到另一个矩阵。见附录一。

矩阵:

7 8 1

6 9 2

5 4 3

本文思路在于,先求最外层矩阵,再求内层矩阵。

最外层矩阵又可以分解成四个相似的子问题。

按照举例的矩阵来看:即 1 2、3 4、5 6、7 8。

问题引刃而解。

不过我花了很多时间,大概两个小时,因为一开始的代码没有现在的简洁。

用 i 来代表赋值的次数,可以大幅度减少思维量和代码量。

(官方给的最优代码容易想到,但是不容易表达)

?

?

#include
  
   
using namespace std;
#define maxSize 100
int center=0;
int a[maxSize][maxSize];
int element=1;
void outArray(int c1,int c2)  //center
{
	if(c1==c2) a[c1][c2]=element; //最后一次赋值 
	int i=-1; 
	while(++i>n;
	while(center<=n-1-center)
	{
		outArray(center,n-1-center);
		center++;
	}
	for(int i=0;i
   
     附录一:
    

?

另一种蛇。

?

/*
/扩展的蛇形方阵
 	7 6 1
	8 5 2
	9 4 3*/
#include
     
      
using namespace stdl
#define maxSize 100
int main()
{
	int n;
	cin>>n;
	int a[maxSize][maxSize];
	int i=0;        //行号
	int element=1; 
	
	

	 
	for (int j=n-1;j>=0;j--) //列号 
	{
		if(i==0)        //0 - n-1     
		{
			for(;i
      
       =0;i--)//while(--i>=0) a[i][j]=element++; i++; //i为0 } } for(int i=0;i
       
        

?

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇ACdream1414 Geometry Problem 下一篇String 字符串截取拼装换行 接近T..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: