c++ - 获取数组的一部分

标签 c++ arrays

假设我有一个像这样的 4 x 4 矩阵:

1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4

用户输入一个随机部分编号,为了简单起见,将其设置为 2。 我想在大矩阵内创建 2x2 矩阵。

Submatrice1:
1 1
2 2

Submatrice2:
3 3
4 4

Submatrice3:
1 1
2 2

Submatrice3:
3 3
4 4

然后我想替换

子矩阵 1 中的每个数字都带有 a

矩阵 2 中每个带有 b 的数字

矩阵 3 中的每个数字都带有

矩阵 4 中每个带有 d 的数字

矩阵的最后一种形式:

a a c c
a a c c
b b d d
b b d d

这应该推广到 n*m 的情况。

我不知道从哪里开始。我会提出任何想法。

最佳答案

我会选择基于索引的计算,因为看起来初始内容并不重要。

/* Input: matrix and the size (2 in the example) */


/* The number of blocks. */
int block_height = (matrix.length + size/2) / size;

for(int row = 0; row < matrix.length; row++) {
  for(int col = 0; col < matrix[0].length; col++) {
    int block_row = row / size;
    int block_col = col / size;

    /* If we count up -> down, right -> left */
    char block_index = block_col * block_height + block_row;

    matrix[row][col] = 'a' + block_index;
  }
}

不过,一旦字母表用完,这将开始放置非字母表字符。

它应该对 2 执行以下操作,我真的不知道这种情况是否符合您的想法。

[ 1 1 1 1 1 ]       [ a a d d g ]
[ 2 2 2 2 2 ]       [ a a d d g ]
[ 3 3 3 3 3 ]  -->  [ b b e e h ]
[ 4 4 4 4 4 ]       [ b b e e h ]
[ 5 5 5 5 5 ]       [ c c f f i ]

关于c++ - 获取数组的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16798423/

相关文章:

java - 创建一个在激活 actionListener 时在小程序上绘制的方法

java - 如何在数组中排列从 500 到 1 的数组? ( java )

c++ - 将类型转换为唯一编号的模板元程序

c++ - 从大 vector 中删除字符串列表的有效方法

c++ - C++ 中的日期/时间解析(任何格式字符串到 Epoch)

c++ - 在非模板类中使用通用模板类

c++ - 可变参数模板上下文中 "..." token 的规则是什么?

javascript - 如何对 Javascript 对象进行排序,或将其转换为数组?

c - 数组中不同的唯一元素

javascript - 为什么不需要的数据被推送到我的数组中?