15天大厂真题带刷 - ZT11 压缩二维码 | Go
压缩二维码
https://www.nowcoder.com/practice/1150d36c2cd64df9bf373988486c6723
题意
给出一个矩阵,#表示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])
}
}
#牛客创作赏金赛#15天大厂真题带刷Go题解 文章被收录于专栏
15天大厂真题带刷Golang题解