天天看點

ali線上評測

最後一分鐘把題粘了下來,去網上一搜竟然早就有人做過了,自己火急火燎的,做的不太好,好多變量聲明的位置不對影響性能,但是心裡隻想着做出答案,沒考慮變量位置的問題,通過了80%的樣例,心裡很是不舒服的感覺。一是自己沒通過,二是想到會不會有人。。。通過這樣的辦法直接過了這題。

如圖,某物流派送員p,需要給a、b、c、d4個快遞點派送包裹,請問派送員需要選擇什麼的路線,才能完成最短路程的派送。假設如圖派送員的起點坐标(0,0),派送路線隻能沿着圖中的方格邊行駛,每個小格都是正方形,且邊長為1,如p到d的距離就是4。随機輸入n個派送點坐标,求輸出最短派送路線值(從起點開始完成n個點派送并回到起始點的距離)

ali線上評測

把自己的代碼曬出來吧,交完卷也沒想到哪種情況下我的代碼是不對的。我自己在想想,也希望有人發現問題能給我留言。

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);
		
	}

}
           
ali