幾種程式設計題高難度常用演算法總結
阿新 • • 發佈:2019-02-19
筆試的程式設計題總是很頭疼,怕的有思路編不出來,作為一個半路出家健忘者,不得不記錄一些見得比較多的演算法,相信對以後筆試的程式設計題會有大大的幫助,話不多說,開始。
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);
}
}
}
}