好像很简单,可是……望不吝赐教!
用C++写一个程序,输入一个8*8的二维数组,再输入一个方向的值(0度、90度、45度或者135度),通过程序算出该二维数组在输入的方向上的相邻元素所有组合出现的次数的矩阵,并返回这个矩阵。
例:输入的8*8二维数组是
0 0 1 1 2 2 3 3 0 1 2 3 0 1 2 3
0 0 1 1 2 2 3 3 1 2 3 0 1 2 3 0
0 0 1 1 2 2 3 3 2 3 0 1 2 3 0 1
0 0 1 1 2 2 3 3 3 0 1 2 3 0 1 2
0 0 1 1 2 2 3 3 0 1 2 3 0 1 2 3
0 0 1 1 2 2 3 3 1 2 3 0 1 2 3 0
0 0 1 1 2 2 3 3 2 3 0 1 2 3 0 1
0 0 1 1 2 2 3 3 3 0 1 2 3 0 1 2
图A 图B
这两个二维数组都只含0、1、2、3、4这五种元素。用P(0,0)表示在某方向(正方向加负方向)上相邻的两个元素的组合为(0,0)的次数;P(0,1)表示在某方向(正方向加负方向)上相邻的两个元素的组合为(0,1)的次数……以此类推,返回的矩阵应为:(矩阵扩号打不出)
P(0,0) P(0,1) P(0,2) P(0,3)
P(1,0) P(1,1) P(1,2) P(1,3)
P= P(2,0) P(2,1) P(2,2) P(2,3)
P(3,0) P(3,1) P(3,2) P(3,3)
当输入的方向是0度(水平方向):
位置关系为水平方向,若统计P(0,0)的值,那就是等于任一元素和其右元素都为0时出现的次数加上任一元素和其左元素都为0时出现的次数。对于图A,P(0,0)=8+8=6,对于图B,P(0,0)=0+0=0。若统计P(0,1)的值,那就是等于任一元素和其右元素分别为0和一时出现的次数,加上任一元素和其左元素分别为0和1时出现的次数。对于图A,P(0,1)=8+0=8,对于图B,P(0,0)=14+0=14。这样以此类推,由图A返回的矩阵如下:
16 8 0 0
8 16 8 0
P= 0 8 16 8
0 0 8 16
,由图B返回的矩阵如下:
0 14 0 14
14 0 14 0
P= 0 14 0 14
14 0 14 0
当输入的方向是90度(垂直方向):
这种位置关系下由图A返回的矩阵如下:
28 0 0 0
0 28 0 0
P= 0 0 28 0
0 0 0 28
由图B返回的矩阵如下:
0 14 0 14
14 0 14 0
P= 0 14 0 14
14 0 14 0
当输入的方向是45度:
这种位置关系下由图A返回的矩阵如下:
14 7 0 0
7 14 7 0
P= 0 7 14 7
0 0 7 14
由图B返回的矩阵如下:
24 0 0 0
0 24 0 0
P= 0 0 24 0
0 0 0 26
当输入的方向是135度:
这种位置关系下由图A返回的矩阵如下:
14 7 0 0
7 14 7 0
P= 0 7 14 7
0 0 7 14
由图B返回的矩阵如下:
0 0 25 0
0 0 0 24
P= 25 0 0 0
0 24 0 0
--------------------next---------------------
阅读(1140) | 评论(0) | 转发(0) |