eclipse代码自动提示:
点击Windows,选择下拉菜单里面的preferences,选项auto activation triggers for java后的文本框中输入abcdefghijklmnopqrstuvwxyz.即可
//背包问题 w:重量 v:价值 n:w.len即为物品种类数 s:总容量
static int dp(int[] w,int[] v,int n,int s){
int[][] dp = new int[n][s+1];
for (int j = 0; j < s+1; j++) //初始化第一行
dp[0][j] = j/w[0]*v[0];
for (int i = 0; i < n; i++) //初始化第一列为0
dp[i][0] = 0;
for (int i = 1; i < n; i++) {
int max = 0;
for (int j = 1; j <= s; j++) { //dp找第i行第j列最优解
for (int k = 0; k*w[i] <= j; k++) //j重量下 选择k个i
max = Math.max(max, k*v[i]+dp[i-1][j-k*w[i]]);
dp[i][j] = max;
}
}
return dp[n-1][s];
}
//二分查找
static int search(int[] arr,int x,int low,int high){
int index = (high+low)/2;
if(low>high) return -1;
if(arr[index] == x) return index;
else if(arr[index] > x) return search(arr, x, low, index-1);
else return search(arr, x, index+1, high);
}
//匹配正则
// \s空白字符 \S非空白字符 +至少一次 *至少零次 ?至多一次
// [a-z]匹配其中所有字母 [a-z]{0,5}匹配0~5 (a|b)中可使用|&符号
String[] arr = "aaa ssd bs b".split("\\s+");
static void reg(){
String reg="\\S+";
Pattern pattern=Pattern.compile(reg);
Matcher m=pattern.matcher("aaaa? adsaf? fsa");
while(m.find()){
System.out.println(m.group(0));
}
}
//全排列方式
static void f(char[] c,int index){
if(index==c.length-1){
System.out.println(c);return;
}
for (int i = index; i < c.length; i++) {
char temp=c[i]; c[i]=c[index]; c[index]=temp;
f(c, index+1);
temp=c[i]; c[i]=c[index];c[inde]=temp;
}
}
//n个长度的全排列数目
static int q(int n){
if(n==1)return 1;
return n*q(n-1);
}
//取小数点后两位 四舍五入
System.out.println(String.format("%.2f", 1.6667));
//10进制转26进制
static void jin_26(){
int b=255;
String str = "";
while(b>0){
int m=b%26;
if(m==0) m=26;
str=(char)(m+64)+str;
b=(b-m)/26;
}
System.out.println(str);
}
//求最大公约数的方法
public static int gong_yue(int x,int y){
if(x<0) x=-x;
if(y<0) y=-y;
if(y==0)return x;
return gong_yue(y, x%y);
}
//浮点数不能直接用==比较? 因为 (0.1+0.2)==0.3 为 false
System.out.println((0.1+0.2)==0.3);
//浮点数比较可以合为整数
System.out.println((1+2)==3);
//或者比较近似值System.out.println((Math.abs((0.1+0.2)-0.3))<1E-10);
//一般1E-6便足够使用
System.out.println(1E-6);
DFS深度优先遍历
DFS(dep,...) //dep带便目前DFS深度
{
if(找到解||走不下去了)
{
...
return;
}
枚举下一种情况,DFS(dep+1,...)
}
BFS广度优先遍历
通常用队列(先进先出)实现
初始化队列Q.
Q={起点s};标记s为已访问
while(Q非空){
取Q队首元素u;u出队;
if(u==目标状态){...}
所有与u相邻且未被访问的点进入队列
标记u为已访问;
}