算法基础——1.1暴力破解法(鸡兔同笼、韩信点兵问题)

来源:互联网 发布:qq for mac os x 10.7 编辑:程序博客网 时间:2024/05/20 03:41

利用计算机的优势:计算速度

采用最笨的计算方法

– 直接枚举每种可能的情况
– 情况数不是天文数字即可
– 要做到不遗漏
– 最好能不重复


例子1.鸡兔同笼问题:鸡兔同笼,头则50,脚则120。 问:鸡兔各几何。
/*  鸡兔问题  鸡兔同笼,头则50,脚则120。  问:鸡兔各几何。*/public class T1{public static void main(String[] args){int HEAD = 50;int FOOT = 120;// x: 鸡数, y: 兔数for(int x=0; x<HEAD; x++){int y = HEAD - x;if(x * 2 + y * 4 == FOOT){System.out.println("x=" + x + ",y=" + y);break;}}}}

例子2.韩信点兵:

/*  韩信点兵  今有士卒,千余人许。  5人为伍,则余1  7人为伍,则余2  8人为伍,则余3  试求确数*/public class T2{public static void main(String[] args){for(int i=1000; i<2000; i++){if(i%5==1 && i%7==2 && i%8==3) System.out.println(i);}}}
3练习:

public class HomeWork1 {/*马与瓦总共有 100 匹马总共驮有 100 块瓦(古代的瓦,很大,很重)每匹大马每次能驮 3 块瓦每匹小马每次能驮 2 块瓦小马驹每次 2个马驹驮 1块瓦求各种马的数目提示:可能是多解的,要列出所有的解。*/public static void main(String[] args) {int big , middle , small;for(big = 1; big < 100; ++big)for(middle = 1; middle < 100; ++middle){small = 100 - big - middle ;if(small%2 == 0 && (big * 3 + middle * 2 + small * 0.5) == 100)System.out.println("大马:"+big+" \t小马:"+middle+" \t小马驹:"+small);}}}





0 0
原创粉丝点击