经典算法回顾1
本文根据园主一线码农的进程来学习,今后也会自己补充一些,希望能够有所进步
public class Main { public static void main(String[] args) { // TODO Auto-generated method stub /* * 公鸡五文钱一只,母鸡三文钱一只,小鸡三只一文钱 * 用100文钱买100只鸡,其中公鸡,母鸡,小鸡必须有,请问各多少只 */ for(int i = 1; i < 20;i++){ for(int j =1; j < 33; j++){ int k = 100 - i - j; if((0 == k % 3)&&(100 == i*5+j*3+k/3)){ System.out.println(i+" "+j+" "+k); } } } } }
public class Main2 { public static void main(String[] args) { // TODO Auto-generated method stub /* * 五家共井 * 五家人公用一口井,甲家的绳子用两条不够,要再用乙家的一条绳子 * 乙家的用三条绳子不够,要再用丙家的一条 * 丙家的用四条绳子不够,还要再用丁家的一条 * 丁家的用五条不够,还要再用戊家的一条 * 戊家用六条不够,还要用甲家的一条 * 最后问井有多深,每家的绳子有多长 */ for(int i = 1; i < 5; i++){ int h = 721 * i; int a = 265 * i; int b = 191 * i; int c = 148 * i; int d = 129 * i; int e = 76 * i; System.out.println(a +" "+ b +" "+c+" "+d+" "+e+" "+h); } } }
五家共井问题提示:遇到问题多思考,不要立即动手,多思考一下,也许会有更好的办法。
public class Main3 { static int Sum(int i, int j){ if (10 == i){ return j; } return Sum(i+1,2*(j+1)); } public static void main(String[] args) { // TODO Auto-generated method stub /* *猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾就多吃了一个。第二天早上又将剩下的桃子吃了一半,还是不过瘾又多 吃了一个。以后每天都吃前一天剩下的一半再加一个。到第10天刚好剩一个。问猴子第一天摘了多少个桃子? 尾递归 */ int sum = Sum(1,1); System.out.println(sum); } }
public class Main4 { static String str1 = "acgbfh"; static String str2 = "ahka"; public static void main(String[] args) { // TODO Auto-generated method stub /* * 最长公共子序列 */ int a = LCS(str1,str2); System.out.print(a); } static int LCS(String str1,String str2){ int a[][] = new int [str1.length()+1][str2.length()+1]; for(int i = 0; i <=str1.length(); i++){ a[i][0] = 0; } for(int j = 0; j <=str2.length(); j++){ a[0][j] = 0; } for(int i = 1; i <= str1.length(); i++){ for(int j = 1; j <= str2.length(); j++){ if(str1.getBytes()[i-1] == str2.getBytes()[j-1]){ a[i][j] = a[i-1][j-1] +1; } else{ a[i][j] = Math.max(a[i-1][j], a[i][j-1]); } } } return a[str1.length()][str2.length()]; } }
//最长公共子序列为一经典算法。