算法提高 计算器
时间限制: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);
}
}