算法与数据结构新手班第2节-创新互联
学会制作对数器
题目一
网站名称:算法与数据结构新手班第2节-创新互联
标题链接:http://scyanting.com/article/ecjeh.html
假设有一个数组arr,用户总是频繁的查询arr中某一段的累加和
10年积累的成都网站建设、网站制作经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先做网站设计后付款的网站建设流程,更有龙凤免费网站建设让你可以放心的选择与我们合作。你如何组织数据,能让这种查询变得便利和快捷?
public class Main {
public static void main(String[] args) {
//假设有一个数组arr,用户总是频繁的查询arr中某一段的累加和
//你如何组织数据,能让这种查询变得便利和快捷?
int[] arr = {4,5,6,8,90};
//前缀数字,访问一次计算一次
System.out.println(arrSum(arr,2,4));
//提前将全部可能创建好,访问时无需计算
System.out.println(arrSUM(arr,2,4));
}
public static long arrSum(int[] arr,int begin,int end){
if(begin>end)
throw new RuntimeException("您的始末数字异常!");
int sum = 0;
int[] a =new int[arr.length];
for(int i = 0;iend)
throw new RuntimeException("您的始末数字异常!");
int[][] a = new int[arr.length][arr.length];
for(int j = 0;j=j)
a[j][i]=a[j][i-1]+a[i][i];
}
}
return a[begin][end];
}
}
题目二如果利用Math.random()函数,
把得到[0,x)范围上的数的概率从x调整成x^2
public class Main {
static long count = 0;
public static void main(String[] args) {
for (long i = 0; i< 10000000; i++) {
f(0.9);
}
System.out.println((double) count / 10000000);
}
public static void f(double x) {
if (x >Math.max(Math.random(), Math.random()))
count++;
}
}
题目三从1~5随机到1~7随机
从a~b随机到c~d随机
01不等概率随机到01等概率随机
public class Main {
public static void main(String[] args) {
int count = 0;
for (int i = 0; i< 1000000; i++) {
if (f5() == 0)
count++;
}
System.out.println((double) count / 1000000);
}
public static int f1() {
//1~5随机
return (int) (Math.random() * 5) + 1;
}
public static int f2_1() {
//0/1等概率发生器
int a = 0;
do {
a = f1();
} while (a == 3);
return a< 3 ? 0 : 1;
}
public static int f2() {
//1~7随机
int a = 0;
do {
a = (f2_1()<< 2) + (f2_1()<< 1) + f2_1();
} while (a == 7);
return a + 1;
}
public static int f3() {
//4~87随机
int a = 0;
do {
a = (f2_1()<< 6) + (f2_1()<< 5) + (f2_1()<< 4) + (f2_1()<< 3) + (f2_1()<< 2) + (f2_1()<< 1) + f2_1();
} while (a >87 || a< 4);
return a;
}
public static int f4() {
//0/1不等概率发生器
if (f1() >2)
return 0;
else
return 1;
}
public static int f5() {
//利用0/1不等概率发生器生成0/1随机生成器,进而可以设计其他生成器
int a = 0;
int b = 0;
do {
a = f4();
b = f4();
} while ((a == 1 && b == 1) || (a == 0 && b == 0));
if (a == 1 && b == 0)
return 0;
else
return 1;
}
}
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
网站名称:算法与数据结构新手班第2节-创新互联
标题链接:http://scyanting.com/article/ecjeh.html