题解 | #压缩二维码#

压缩二维码

https://www.nowcoder.com/practice/1150d36c2cd64df9bf373988486c6723

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int sum = 0;   // 统计每次要输出的值
        int index = 0;   // 标志当前所在的位置

        int m = (int) Math.pow(2, n);
        for (int i = 0; i < m; i ++) {
            String s = sc.next();
            for (int j = 0; j < s.length(); j ++) {
                // 3 - index是因为当前是从前往后(从高位到低位)遍历的二进制,而且每四个二进制位就统计一次总和
                if (s.charAt(j) == '#') sum += Math.pow(2, 3 - index);
                // 否则表示该位置是 '.',而不是 ‘#’
                // 无论是 . 还是 # ,index都会往后走一个位置
                index ++;
                // 当index为4时,表示已经走过了4个二进制位,此时输出其所对应的十进制数,同时清空sum和index
                if (index == 4) {
                    System.out.print(sum + " ");
                    sum = 0;
                    index = 0;
                }
            }
        }

        sc.close();
    }
}

全部评论

相关推荐

08-05 18:14
门头沟学院 Java
小花的沉默:是学历厂没错啊,学历太高了不要
投递小鹏汽车等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务