14天阅读挑战赛
努力是为了不平庸~
如果说数学是皇冠上的一颗明珠,那么算法就是这颗明珠上的光芒,算法让这颗明珠更加的熠熠生辉,为了科技的进步和社会的发展照亮了前进的路,数学是美学,算法是艺术,走进算法的人。才能体会它的无穷魅力。
我们的生活中,算法无处不在。
从最开始的数学开始,一盘棋的麦子,神奇的兔子数列这些都是经典的基础算法。
今天在给大家分享一个小算法!!!
算法题目描述
有一堆桃子,猴子第一天吃掉了一半,并多吃了一个,以后每天猴子都吃剩下的一半并多吃一个 第十天的时候还没有吃,发现只剩下一个桃子了,问最初共有多少个桃子
做题思路
day10 1 day9 (day10+1)*2 day8 (day9+1)*2 反向递归 1出口 day10==1 2规律 每一天的桃子数量都是后一天数量+1,乘以2
模板代码
public static int getCount(int day){ if (day<=0||day>=11){ System.out.println("当前时间错误"); return -1; } if (day==10){//出口 return 1; } return (getCount(day+1)+1)*2; }
提示:有没有发现,这个和兔子数列刚好相反。
提示:可对同类题型或者其他相关题目做方法论总结,或对这类题型发表自己的看法,提出自己的解题经验
算法题二:
* 小A在玩一个网络游戏。这个游戏有个抽装备环节。装备池总 * 共有n+m件装备,分别为n件普通装备和m件ssr装备。抽一次 * 装备的费用按你抽中的装备决定。 * * 抽中每一件装备的概率都为1/(n+m)。如果你抽中了ssr装备。 * 这次的抽装备费用为2金币,否则这次的费用为1金币。如果你 * 抽中了ssr装备,得到奖励,并且装备不会放回。如果你抽中 * 了普通装备。得到奖励,但是这件装备会放回装备池。现在 * 小A希望抽中所有的ssr装备,请你计算一下:需要花费金币 * 的期望值。
代码
public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("请输入普通装备n的个数:"); int n=sc.nextInt(); System.out.println("请输入ssr装备m的个数:"); int m=sc.nextInt(); double coinNum=coinNum(n,m); System.out.println("需要花费金币:"+coinNum); // System.out.println(String.format("%.2f",coinNum)); } public static double coinNum(int n,int m ){ double cost = 0; double thiscost=0; for (int i=1; i<=m ; i++) { thiscost = (double)n/(double) (m-i+1); cost=cost+2+thiscost; } return cost; }