题意

给出一个矩阵,#表示1,.表示0,每4位看作二进制,求十进制

思路

直接模拟即可,这里是先把矩阵转化为只有0和1的数组,然后从头开始遍历,每次取4位按照1 2 4 8 的数位求出十进制数字的值

Go代码

package main

import (
	"fmt"
	"math"
)

func main() {
    var n int 
    fmt.Scan(&n)
    var s string 
    tmp := make([]int,0,n)
    for i := 0; i < int(math.Pow(2,float64(n))); i ++ {
        fmt.Scan(&s)
        for j := 0; j < len(s); j ++ {
            if s[j] == '#' {
                tmp = append(tmp,1)
            }else{
                tmp = append(tmp,0)
            }
        }
    }
    //fmt.Println(tmp)
    for i := 0; i < len(tmp); i += 4 {
        //1 2 4 8 
        fmt.Printf("%d ",tmp[i]*8+tmp[i+1]*4+tmp[i+2]*2+tmp[i+3])
    }
}