您的位置:首页 > 其它

540A: Combination Lock

2015-07-25 20:27 246 查看
题目链接:http://codeforces.com/problemset/problem/540/A

题意:

输入的两个长度一样的数,求对应位置的某位数到下一个数需要最小的步长,每次只能先前或先后走以步,求所有的步长的的和。(如下例)

Sample test(s)

input
5
82195
64723


output
13




解题:

这个很简单,暴力破解

可以把数字0-9是个长度是10的循环,对于任意两个数之间的最小距离就等于:min{|a-b|,|10-|a-b||}

对于两个数之间的距离很容易想到是 :|a-b|,但是这个要求的最小距离,a绕一圈回来的距离是10,若按照一定方向走:a->b ,b->a 的距离也是10,则就有了 |10-|a-b||这个b->a的距离;我们要求的是最小距离,所以要在这个两个距离中取最小值

Java程序:

import java.util.Scanner;

public class A540 {
static void run0(){
Scanner in = new Scanner(System.in);
int n = in.nextInt();
String before = in.next();
String end = in.next();
int sum = 0;
for(int i =0;i<n;i++){
int a = (int)before.charAt(i);
int b= (int)end.charAt(i);
sum = sum + Math.min(Math.abs(a-b), Math.abs(10-Math.abs(a-b)));
}
System.out.println(sum);
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
run0();
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: