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

为了排除电路故障,现在你需要计算,将数字A变为数字B需要经过多少次变换?
注意:现在将其中每段小二极管的开和关都定义为一次变换。例如数字1变为2是5次操作。
【数据范围】
L< =100
输入:
第一行为一个正整数L,表示数码的长度。
接下来两行是两个长度为L的数字A和B,表示要把数字A变成数字B(数字可以以0开头)。
样例输入:
3
101
025
输出:
一行一个整数,表示这些小二极管一共要变换多少次。
样例输出 :
12
解题思路:
构建数组存放七段码,1代表亮,0代表不亮;改变次数即为每个数字字符的 段不同数
注意事项:
无
参考代码:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int seg[][] = new int[][] {{0,1,1,1,1,1,1},{0,0,0,1,1,0,0},{1,0,1,1,0,1,1},{1,0,1,1,1,1,0},
{1,1,0,1,1,0,0},{1,1,1,0,1,1,0},{1,1,1,0,1,1,1},{0,0,1,1,1,0,0},{1,1,1,1,1,1,1},{1,1,1,1,1,1,0}}; //七段码的自定义表示
int l=in.nextInt();//数字串长度
in.nextLine(); //吸收换行
String s1 =in.nextLine(),s2=in.nextLine();
int cnt=0; //统计次数
for(int i=0;i<l;i++) {
int num1 =(int)(s1.charAt(i)-'0'),num2=(int)(s2.charAt(i)-'0');
for(int j=0;j<7;j++) {
if(seg[num1][j]!=seg[num2][j])
cnt++;
}
}
System.out.println(cnt);
in.close();
}
}
334



被折叠的 条评论
为什么被折叠?



