当前位置:首页 > 爱情占卜

什么是螺旋矩阵?

关于螺旋矩阵有不同的意见,它指的是形状像

21 22 ................

20 7 8 9 10

19 6 1 2 11

18 5 4 3 12

17 16 15 14 13

的矩阵。

有两个问题:

1.编程输出这个矩阵。

2.设点1的坐标为(0,0),X方向向右为正,Y方向向下为正。比如7的坐标是(-1,-1),2是(0,1),3是(65438)。

1.第一个问题是通过模拟构建的。可以看出,从1开始的方向变化总是对的->;向下-& gt;左-& gt;向上,

连续行走长度为1->;1->;2->;2->;3->;3->;...,发现这个规律后写代码就不难了!注意我在下面设置了1的位置。

在((n-1)/2,(n-1)/2)的位置。

空模拟(整数)

{

int x,y;

x = y =(n-1)/2;//1的位置

data[x][y]= 1;

int len = 1;

int count = 0;

int num = 2;

方向dir =右;

while(num & lt;= n * n)

{

for(int I = 0;我& ltleni++)

{

开关(方向)

{

案例左侧:

-y;打破;

案例权利:

++ y;打破;

案例向上:

-x;打破;

案例向下:

++ x;打破;

默认:break

}

data[x][y]= num++;

}

count++;

if(count == 2)

{

count = 0;

len++;

}

dir =(方向)((dir+1)% 4);

}

}

2.对于第二个问题,我也是先找出规律,再模拟。

首先不难看出,n*n的螺旋矩阵的右下角坐标一定是(m,m),其中m=n-1。

通过观察可以看出,当n=1时,右下角(0,0)的值是1,当n=2时,右下角(1,1)的坐标值是(3,3),当n=3时,右下角(2,3)。

a,b,c可以通过联立方程得到。最后f(n)= 4 * n ^ 2-2 * n+1。

接下来根据(x,y)和右下角(n-1,n-1)的关系计算值。这里需要注意的是,当X的值与n-1相同时,应优先考虑Y是否与-m相关。这就要求我们要注意函数中x和y的判断顺序。

代码如下:

//以(1,1)的位置为原点,向右为X正半轴,向下为Y正半轴。

int GetValue(int x,int y)

{

int m = max(abs(x),ABS(y));

int right bottom = m * m * 4-2 * m+1;

int value = 0;

如果(x == -m)

{

value = right bottom+2 * m+m-y;

}

else if( y == m)

{

value = right bottom+m-x;

}

else if(y == -m)

{

值= right bottom+4 * m+x+m;

}

else if( x == m)

{

value = right bottom-(m-y);

}

返回值;

}

  • 什么是螺旋矩阵?
  • 八字天干的五位一体组合是什么,整合的原理是什么
  • 五行缺水缺木叫什么??你说多就给谁。张(姓氏)
  • 每天换个发型,卷发棒会更大!
  • 有哪些免费的八字命名网站?
  • 你好,我还没结婚。能不能帮我看一下我的星座运势
  • 八字命名寓意美好生活。
  • 八字王瑾适合卖珠宝行业吗?
  • 开头七字八字的歌。
  • 00年1.9星座运势