算法第四版1.4算法分析:习题1.4.44
作者:互联网
题目意思是当第一次重复的数出现时 生成的前一个数用了多少次
import edu.princeton.cs.algs4.StdOut;
import edu.princeton.cs.algs4.StdRandom;
public class E1_4_44 {
public static void main(String[]args){
int N=10000;
double sum=0.0;
for (int i=0;i<20000;i++){//
int temp=BirthdayProblem(N);
sum+=temp;
StdOut.printf("N=%8d find=%8d\n",N,temp);
}
StdOut.println("avg="+sum/20000+" expectation="+Math.sqrt(Math.PI*N/2));
}
public static int BirthdayProblem(int N){
//寻找第一次出现重复值的前一个值
int total=0;
int[]res=new int[N];//每个位置存放该元素出现的次数
int prev= StdRandom.uniform(0,N);total++;
res[prev]++;
int now=StdRandom.uniform(0,N);total++;
res[now]++;
while (res[now]<=1){
prev=now;
now=StdRandom.uniform(0,N);total++;
res[now]++;
}
return total;
}
}
标签:1.4,int,44,算法,algs4,edu,cs,习题 来源: https://blog.csdn.net/qq_40569107/article/details/100897892