zoukankan      html  css  js  c++  java
  • go数组转换为稀疏数组

    package main
    
    import "fmt"
    
    type Node struct {
       Row   int
       Col   int
       Value int
    }
    
    // 稀疏数组
    func main() {
    
       sparse := ToSparse()
    
       ToArray(sparse)
    }
    
    // ToArray 稀疏数组恢复
    func ToArray(sparse []Node)  {
    
       var arr  [11][11]int
    
       for k, node := range sparse {
          if k != 0 {
             arr[node.Row][node.Col] = node.Value
          }
       }
    
       fmt.Println("恢复后的原始数据")
       for _, v := range arr {
          fmt.Println(v)
       }
    
    
    
    }
    
    // ToSparse 数组转换为稀疏数组
    func ToSparse() []Node {
       const row = 11
       const col = 11
    
       // 1 创建一个原始数组 1 黑子 2 蓝子
       var chessMap [row][col]int
    
       chessMap[1][2] = 1
       chessMap[2][3] = 2
       // 2 输出查看原始数据
       for _, v := range chessMap {
          fmt.Println(v)
       }
    
       // 3 转为稀疏数组
       // 遍历chessMap 发现一个元素的值!=0 创建一个node结构体
       // 将其放入到切片中
       var sparseArr []Node
       // 加入规模 标准的稀疏数组 含有 行数 列数
       node0 := Node{
          Row:   row,
          Col:   col,
          Value: 0,
       }
       sparseArr = append(sparseArr, node0)
    
       for i, v := range chessMap {
          for j, v2 := range v {
             if v2 != 0 {
                // 创建一个节点
                var node = Node{
                   Row:   i,
                   Col:   j,
                   Value: v2,
                }
                sparseArr = append(sparseArr, node)
             }
          }
       }
    
       // 4 输出查看原始数据
       for _, node := range sparseArr {
          fmt.Printf("%d %d %d 
    ",node.Row, node.Col, node.Value)
       }
    
       return sparseArr

    [0 0 0 0 0 0 0 0 0 0 0]
    [0 0 1 0 0 0 0 0 0 0 0]
    [0 0 0 2 0 0 0 0 0 0 0]
    [0 0 0 0 0 0 0 0 0 0 0]
    [0 0 0 0 0 0 0 0 0 0 0]
    [0 0 0 0 0 0 0 0 0 0 0]
    [0 0 0 0 0 0 0 0 0 0 0]
    [0 0 0 0 0 0 0 0 0 0 0]
    [0 0 0 0 0 0 0 0 0 0 0]
    [0 0 0 0 0 0 0 0 0 0 0]
    [0 0 0 0 0 0 0 0 0 0 0]
    11 11 0
    1 2 1
    2 3 2

    恢复后的原始数据
    [0 0 0 0 0 0 0 0 0 0 0]
    [0 0 1 0 0 0 0 0 0 0 0]
    [0 0 0 2 0 0 0 0 0 0 0]
    [0 0 0 0 0 0 0 0 0 0 0]
    [0 0 0 0 0 0 0 0 0 0 0]
    [0 0 0 0 0 0 0 0 0 0 0]
    [0 0 0 0 0 0 0 0 0 0 0]
    [0 0 0 0 0 0 0 0 0 0 0]
    [0 0 0 0 0 0 0 0 0 0 0]
    [0 0 0 0 0 0 0 0 0 0 0]

  • 相关阅读:
    闭包
    函数进阶2
    文档翻译 Python 2.7.x和Python 3.x之间的主要区别(包括示例)
    Deep Learn 关于单维度模型的多维输出
    Deep Learning 名词解释
    Deep Learning 激活函数
    Deep Learning 归一化、标准化
    Deep Learning 梯度下降
    Deep Learning 循环神经网络
    Deep Learning BP反向传播
  • 原文地址:https://www.cnblogs.com/brady-wang/p/15363808.html
Copyright © 2011-2022 走看看