zoukankan      html  css  js  c++  java
  • 稀疏数组

    一、概念

      SparseArray 主要用于对数据压缩,就拿一个存储五子棋的游戏来实现

    这个棋盘的格局11×11,默认为0,黑子用1代替,蓝子用2代替,如果直接存储会浪费很多空间。

    通过定义一个对象来存储每一个数据的位置和值,就可以减少存储空间的浪费

    黑子:Row:1   Column:2  Value:1

    蓝子:Row:2   Column:3  Value:3

    二、实现

      这里采用go语言实现

    package main
    
    import "fmt"
    
    type Node struct {
        Row    int
        Column int
        Value  int
    }
    
    //棋盘格局
    const ROW, COLUMN int = 11, 11
    
    func main() {
        //创建一个原始的二维数组
        var dataMap [ROW][COLUMN]int
        dataMap[1][2] = 1
        dataMap[2][3] = 2
    
        //数据存储
        nodes := []Node{
            Node{
                Row:    ROW,
                Column: COLUMN,
                Value:  0,
            },
        }
    
        fmt.Println("打印棋盘数据----------------------------")
        for i, r := range dataMap {
            for j, v := range r {
                fmt.Printf("%d	", v)
                if v != 0 {
                    nodes = append(nodes, Node{
                        Row:    i,
                        Column: j,
                        Value:  v,
                    })
                }
            }
            fmt.Println()
        }
    
        fmt.Println("打印保存数据----------------------------")
        for _, item := range nodes {
            fmt.Printf("%d %d %d
    ", item.Row, item.Column, item.Value)
        }
    
        fmt.Println("打印还原数据----------------------------")
        if len(nodes) == 0 {
            return
        }
        var restoreData [ROW][COLUMN]int
        for _, item := range nodes[1:] {
            restoreData[item.Row][item.Column] = item.Value
        }
        for _, r := range restoreData {
            for _, v := range r {
                fmt.Printf("%d	", v)
            }
            fmt.Println()
        }
    }

    打印输出

  • 相关阅读:
    contextMenu,右键菜单
    hashchange
    web攻击日志分析之新手指南
    工匠人生
    数学有卵用之通信篇
    精英主义(一)
    flaskbb部署笔记
    深入分析一波,你们说的云安全到底是什么鬼?
    Gh0st与云安全
    困境与突破
  • 原文地址:https://www.cnblogs.com/fanxp/p/12100848.html
Copyright © 2011-2022 走看看