package DynamicProgramming;/** here is a important algo in this we have to count* maximum no. of different binary strings which doesnot have* consectuive 1sTest Case:int n=30;startAlgo();System.out.println(numStrIS(n));System.out.println(endAlgo()+"ms");startAlgo();CountNumBinaryStr out=new CountNumBinaryStr();System.out.println(out.numStrR(n).ans);System.out.println(endAlgo()+"ms");startAlgo();System.out.println(countStrings(n,0));System.out.println(endAlgo()+"ms");*/public class CountNumBinaryStr {public static long startTime;public static long endTime;public static void startAlgo() {startTime=System.currentTimeMillis();}public static long endAlgo() {endTime=System.currentTimeMillis();return endTime-startTime;}public static int numStrIS(int n) {int[] zeros=new int[n];int []ones=new int[n];//seedzeros[0]=1;ones[0]=1;for(int i=1;i<n;i++) {zeros[i]=zeros[i-1]+ones[i-1];ones[i]=zeros[i-1];}int ans=zeros[n-1]+ones[n-1];return ans;}private class Binary{int ones;int zeros;int ans;Binary(int ones,int zeros){this.ones=ones;this.zeros=zeros;this.ans=0;}Binary(){}}public Binary numStrR(int n) {if(n==1) {Binary br=new Binary(1,1);return br;}Binary mr=new Binary();Binary rr=numStrR(n-1);mr.zeros=rr.zeros+rr.ones;mr.ones=rr.zeros;mr.ans=mr.zeros+mr.ones;return mr;}public static int countStrings(int n, int lastDigit){if (n == 0) {return 0;}// if only one digit is leftif (n == 1) {return (lastDigit == 1) ? 1: 2;}// if last digit is 0, we can have both 0 and 1 at current posif (lastDigit == 0) {return countStrings(n - 1, 0) + countStrings(n - 1, 1);}// if last digit is 1, we can have only 0 at current positionelse {return countStrings(n - 1, 0);}}}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。