最後一分鐘把題粘了下來,去網上一搜竟然早就有人做過了,自己火急火燎的,做的不太好,好多變量聲明的位置不對影響性能,但是心裡隻想着做出答案,沒考慮變量位置的問題,通過了80%的樣例,心裡很是不舒服的感覺。一是自己沒通過,二是想到會不會有人。。。通過這樣的辦法直接過了這題。
如圖,某物流派送員p,需要給a、b、c、d4個快遞點派送包裹,請問派送員需要選擇什麼的路線,才能完成最短路程的派送。假設如圖派送員的起點坐标(0,0),派送路線隻能沿着圖中的方格邊行駛,每個小格都是正方形,且邊長為1,如p到d的距離就是4。随機輸入n個派送點坐标,求輸出最短派送路線值(從起點開始完成n個點派送并回到起始點的距離)

把自己的代碼曬出來吧,交完卷也沒想到哪種情況下我的代碼是不對的。我自己在想想,也希望有人發現問題能給我留言。
ali基本涼了
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeMap;
import java.util.Map.Entry;
/*
*
* 如圖,某物流派送員p,需要給a、b、c、d4個快遞點派送包裹,請問派送員需要選擇什麼的路線,
* 才能完成最短路程的派送。假設如圖派送員的起點坐标(0,0),派送路線隻能沿着圖中的方格邊行駛,
* 每個小格都是正方形,且邊長為1,如p到d的距離就是4。随機輸入n個派送點坐标,求輸出最短派送路線值(從起點開始完成n個點派送并回到起始點的距離)
*/
public class Main {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
int n=scan.nextInt();
int left=0;
int right=0;
int sum=0;
Map<Integer,Integer> map=new TreeMap<Integer,Integer>();
for(int i=0;i<n;i++){
String str=scan.next();
String []s=str.split(",");
left=Integer.parseInt(s[0]);
right=Integer.parseInt(s[1]);
map.put(left, right);
}
int preKey=0;
int preValue=0;
int key =0;
int value =0;
Set<Entry<Integer,Integer>> set = map.entrySet();
for(Entry<Integer,Integer> entry : set){
key = entry.getKey();
value = entry.getValue();
int result=Math.abs(key-preKey)+Math.abs(value-preValue);
sum+=result;
preKey=key;
preValue=value;
}
sum=sum+key+value;
System.out.println(sum);
}
}