94 计算器
作者: Turbo时间限制: 1S章节: 宽度优先搜索
问题描述 :
王小二的计算器上面的LED显示屏坏掉了,于是他找到了在计算器维修与应用系学习的你来为他修计算器。
屏幕上可以显示0~9的数字,其中每个数字由7个小二极管组成,各个数字对应的表示方式如图所示:
为了排除电路故障,现在你需要计算,将数字A变为数字B需要经过多少次变换?
注意:现在将其中每段小二极管的开和关都定义为一次变换。例如数字1变为2是5次操作。
【样例输入1】
3
101
025
【样例输出1】
12
【样例输入2】
8
19920513
20111211
【样例输出2】
27
输入说明 :
第一行为一个正整数L,表示数码的长度。
接下来两行是两个长度为L的数字A和B,表示要把数字A变成数字B(数字可以以0开头)。
L<=100
输出说明 :
一行一个整数,表示这些小二极管一共要变换多少次。
输入范例 :
8
91305830
22653549
输出范例 :
23
import java.util.Scanner;
public class test_94 {
/**
* 94 计算器
*/
public static void main(String[] args) {
//分别是 0-9所对应的0-9变换所要的次数
int[][] arr = {
{0, 4, 3, 3, 4, 3, 2, 3, 1, 2},
{4, 0, 5, 3, 2, 5, 6, 1, 5, 4},
{3, 5, 0, 2, 5, 4, 3, 4, 2, 3},
{3, 3, 2, 0, 3, 2, 3, 2, 2, 1},
{4, 2, 5, 3, 0, 3, 4, 3, 3, 2},
{3, 5, 4, 2, 3, 0, 1, 4, 2, 1},
{2, 6, 3, 3, 4, 1, 0, 5, 1, 2},
{3, 1, 4, 2, 3, 4, 5, 0, 4, 3},
{1, 5, 2, 2, 3, 2, 1, 4, 0, 1},
{2, 4, 3, 1, 2, 1, 2, 3, 1, 0}};
int sum = 0;
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
sc.nextLine();
char[] str1 = sc.nextLine().trim().toCharArray();
char[] str2 = sc.nextLine().trim().toCharArray();
for (int i = 0; i < n; ++i) {
sum += arr[str1[i] - '0'][str2[i] - '0'];
}
System.out.println(sum);
}
}