Java in 藍橋杯
阿新 • • 發佈:2020-11-05
Java in 藍橋杯
JDK是1.6,整合環境是Eclipse,有填空題..補充中
一碼當先
先學會寫基本的使用是根本!
需要在專案根目錄下建個aa.txt的文字檔案
import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws Exception { // 讀取檔案1:然後用while((str=br.nextLine()!=null)不斷讀取內容 BufferedReader br = new BufferedReader(new FileReader("aa.txt")); // 讀取檔案2:控制檯輸入重定向到檔案,減少複製的麻煩 System.setIn(new FileInputStream("aa.txt")); // 進位制轉轉1:將255轉換成16進位制,二進位制,八進位制同理 System.out.println(Integer.toHexString(255)); // 進位制轉轉2:將FF作為16進位制的數來轉換成10進製表示 System.out.println(Integer.parseInt("FF", 16)); // 輸入加快1:使用緩衝區 Scanner in = new Scanner(new BufferedInputStream(System.in));//更快 System.out.println(in.nextLine()); in.close(); System.out.println("---------------------------------"); Integer[] arr1 = {1, 3, 5, 7, 2, -1}; // 資料排序1:基本資料型別升序直接使用Arrays.sort(); Arrays.sort(arr1); System.out.println(Arrays.toString(arr1)); // 資料排序2:使用自定義比較器(寫個類繼承Comparator)以按照要求排序 Arrays.sort(arr1, new Comparator<Integer>() { public int compare(Integer o1, Integer o2) { return o2 - o1; } }); System.out.println(Arrays.toString(arr1)); // 資料排序3:自定義物件需實現Comparable介面 Point[] points = {new Point(1, 2), new Point(2, 1), new Point(-22, 11), new Point(1, -1)}; Arrays.sort(points); System.out.println(Arrays.toString(points)); // 資料結構1:棧LIFO peek是看棧頂不彈出,pop是彈出並返回棧頂,ArrayDeque Stack<Integer> stack = new Stack<Integer>(); stack.push(2); stack.push(1); stack.push(3); System.out.println(stack.pop()); System.out.println(stack.peek()); /* 資料結構2:雙向佇列Deque()可以作為棧使用,效能比extends Vector的Stack()好 使用棧時,用ArrayDeque的push和pop方法; 使用佇列時,使用ArrayDeque的add和remove方法。 */ ArrayDeque<Integer> stk = new ArrayDeque<Integer>(); // 資料結構3:優先佇列(小頂堆) 無論入隊順序,當前最大的元素優先出隊。用於每次提取最小的值 Queue<Point> priorityQueue = new PriorityQueue<Point>(16); priorityQueue.addAll(Arrays.asList(points)); System.out.println(priorityQueue.poll()); } } class Point implements Comparable<Point> { int x, y; public Point(int x, int y) { this.x = x; this.y = y; } // 先比較x,再比較y,升序 public int compareTo(Point o) { return (x != o.x ? x - o.x : y - o.y); } @Override public String toString() { return "Point:{" + "x=" + x + ", y=" + y + '}'; } }
基礎演算法
動態規劃
目的:窮舉求最值,優化遞迴樹,消除重疊子問題
要點:備忘錄,用空間換時間
難點:狀態轉移方程、重疊子問題、最優子結構、變種多