java 地铁换乘算法_华为2014 第三题地铁换乘 java实现

该博客介绍了一个Java程序,用于计算两个地铁站点之间的最少换乘次数。程序首先通过 Flag() 函数确定起始和目的地的线路,然后根据不同的线路转换规则计算换乘次数。最后输出至少需要乘坐的站数。
摘要由CSDN通过智能技术生成

importjava.io.BufferedInputStream;importjava.util.ArrayList;importjava.util.Collections;importjava.util.List;importjava.util.Scanner;public classPath {private static charh1, h2;private static intn1, n2;private staticString s1, s2;public static voidmain(String[] args) {

Scanner cin= new Scanner(newBufferedInputStream(System.in));int flag,p=0;while(cin.hasNext()) {

s1=cin.next();

s2=cin.next();

flag=Flag();if(flag==1){

big();if((n2-n1)>=10){

p=(19-n2)+n1+1;

}else{

p=n2-n1+1;

}

}if(flag==2){

big();

p=n2-n1+1;

}if(flag==3){

p=add(n1, n2);

}if(flag==4){

p=add(n2,n1);

}

System.out.println("您至少需要坐"+p+"站");

}

}public static intFlag() {

h1= s1.charAt(0);

h2= s2.charAt(0);

n1= Integer.parseInt(s1.substring(1, s1.length()));

n2= Integer.parseInt(s2.substring(1, s2.length()));if (h1 == 'A' && h2 == 'A') {

n1=A(n1);

n2=A(n2);return 1;

}if (h1 == 'B' && h2 == 'B') {

n1=B(n1);

n2=B(n2);return 2;

}if (h1 == 'T') {if (h2 == 'T') {

n1=T(n1,1);

n2=T(n2, 1);return 1;

}if (h2 == 'A') {

n1=T(n1,1);

n2=A(n2);return 1;

}if(h2=='B'){

n1=T(n1,2);

n2=B(n2);return 2;

}

}if(h2=='T'){if (h1 == 'A') {

n2=T(n2,1);

n1=A(n1);return 1;

}if(h1=='B'){

n2=T(n2,2);

n1=B(n1);return 2;

}

}if(h1=='A'){

n1=A(n1);

n2=B(n2);return 3;

}else{

n1=B(n1);

n2=A(n2);return 4;

}

}public static int A(intn) {if (n > 9) {if (n >= 10 && n <= 13) {

n++;

}else{

n= n + 2;if (n == 20)

n= 1;

}

}returnn;

}public static int B(intn) {if (n > 5) {if (n >= 6&&n <= 10) {

n++;

}else{

n= n + 2;

}

}returnn;

}public static int T(int n, inti) {if (i == 1) {if (n == 1) {

n= 10;

}else{

n= 15;

}

}else{if (n == 1) {

n= 6;

}else{

n= 12;

}

}returnn;

}public static voidbig(){if(n1>n2){

n1=n1+n2;

n2=n1-n2;

n1=n1-n2;

}

}public static int add(int a,intb){

List list = new ArrayList();intp1,p2,p3,p4;

p1=p(a,1);

p2=p(a,2);

p3=Math.abs(b-6);

p4=Math.abs(b-12);

list.add(p1+p3+5);

list.add(p1+p4);

list.add(p2+p3);

list.add(p2+p4+5);

Collections.sort(list);return list.get(0);

}public static int p(int a,inti){intk1,k2;if(i==1){

k1=Math.abs(a-15)+1;

k2=5+a;return (k1

}else{

k1=Math.abs(a-10)+1;

k2=10+a;return (k1

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值