Java实现 蓝桥杯VIP 算法提高 计算器

知识共享许可协议 版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons

算法提高 计算器
时间限制:1.0s 内存限制:256.0MB
【问题描述】
  王小二的计算器上面的LED显示屏坏掉了,于是他找到了在计算器维修与应用系学习的你来为他修计算器。
  屏幕上可以显示0~9的数字,其中每个数字由7个小二极管组成,各个数字对应的表示方式如图所示:

在这里插入图片描述

为了排除电路故障,现在你需要计算,将数字A变为数字B需要经过多少次变换?
  注意:现在将其中每段小二极管的开和关都定义为一次变换。例如数字1变为2是5次操作。

【输入格式】
  第一行为一个正整数L,表示数码的长度。
  接下来两行是两个长度为L的数字A和B,表示要把数字A变成数字B(数字可以以0开头)。
【输出格式】
  一行一个整数,表示这些小二极管一共要变换多少次。
【样例输入1】

3
  101
  025
【样例输出1】
  12
【样例输入2】

8
  19920513
  20111211
【样例输出2】
  27

【数据范围】
  L<=100

import java.util.Scanner;


public class 计算器 {
	public static void main(String[] args) {
		Scanner out=new Scanner(System.in);
		int L=out.nextInt();
		String a=out.next();
		String b=out.next();
		int[][] arr={
				{1,1,1,1,1,1,0},
				{0,1,1,0,0,0,0},
				{1,1,0,1,1,0,1},
				{1,1,1,1,0,0,1},
				{0,1,1,0,0,1,1},
				{1,0,1,1,0,1,1},
				{1,0,1,1,1,1,1},
				{1,1,1,0,0,0,0},
				{1,1,1,1,1,1,1},
				{1,1,1,1,0,1,1}
		};
		char[] c1=a.toCharArray();
		char[] c2=b.toCharArray();
		int count=0;
		for (int i = 0; i < L; i++) {
			for (int j = 0; j < 7; j++) {
				if(arr[c1[i]-'0'][j]!=arr[c2[i]-'0'][j]) count++;
			}
		}
		System.out.println(count);
	}

}

猜你喜欢

转载自blog.csdn.net/a1439775520/article/details/93300099
今日推荐