当前位置:   article > 正文

【编程学习】数组转矩阵_输入一个数转为矩阵

输入一个数转为矩阵

一、题目:

        给定一个一维数组,要求是将数组转化成一个矩阵。数组的输入作为矩阵的第一列,之后每一列的数值,都要比上一列下移一行。

举例

输入:

[1,2,3,4,5,6,7,8,9,10]

输出:

  1. 1 10 9 8 7 6 5 4 3 2
  2. 2 1 10 9 8 7 6 5 4 3
  3. 3 2 1 10 9 8 7 6 5 4
  4. 4 3 2 1 10 9 8 7 6 5
  5. 5 4 3 2 1 10 9 8 7 6
  6. 6 5 4 3 2 1 10 9 8 7
  7. 7 6 5 4 3 2 1 10 9 8
  8. 8 7 6 5 4 3 2 1 10 9
  9. 9 8 7 6 5 4 3 2 1 10
  10. 10 9 8 7 6 5 4 3 2 1

二、解题

解题思路:动态规划

从题目和举例看,第一列,就是输入的数组值竖排,那么:

dp[i][0] = input[i]

从第二列开始,取值相比第一列,相当于一个环,往下转动了一行,然后赋值,在dp上,应该是:

dp[i][j] = dp[i -1][j-1]

dp[0][j] = dp[len - 1][j-1]

示例代码:Go

  1. func ConvertToMatrix(input []int32) (error, [][]int32) {
  2. dataLen := int32(len(input))
  3. if (input == nil) || (dataLen == 0) {
  4. return errors.New("invalid Input"), nil
  5. }
  6. dp := make([][]int32, dataLen)
  7. for i := range dp {
  8. dp[i] = make([]int32, dataLen)
  9. }
  10. for i := int32(0); i < dataLen; i++ {
  11. dp[i][0] = input[i]
  12. }
  13. for j := int32(1); j < dataLen; j++ {
  14. dp[0][j] = dp[dataLen-1][j-1]
  15. for i := int32(1); i < dataLen; i++ {
  16. dp[i][j] = dp[i-1][j-1]
  17. }
  18. }
  19. return nil, dp
  20. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/空白诗007/article/detail/986766
推荐阅读
相关标签
  

闽ICP备14008679号