1. 程式人生 > >幾種程式設計題高難度常用演算法總結

幾種程式設計題高難度常用演算法總結

筆試的程式設計題總是很頭疼,怕的有思路編不出來,作為一個半路出家健忘者,不得不記錄一些見得比較多的演算法,相信對以後筆試的程式設計題會有大大的幫助,話不多說,開始。
1.窮舉法

全排列:
比如一個數組給你,讓你求所有全排列的可能,這個方法不去重的,要是去重的話,直接搞一個Set去存放一下是不是就好了

public class Main {
    public static void main(String[] args) {
        int[] ss = {1,2,3,4};
        process(ss, 0, ss.length-1);
    }

    public
static void swap(int[] arr, int i, int j) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } public static void process(int[] arr, int from, int to) { if(to<=1) return; if(from==to) { //如果這裡是字元陣列可以直接輸出即可,無序遍歷 for(int a:arr) { System.out
.print(a); } System.out.print(" "); } else { for(int i=from;i<=to;i++) { swap(arr, i, from);//交換的順序無所謂 process(arr, from+1, to); swap(arr, from, i); } } } }