import java.util.Arrays;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @version 0.1
* @author QuarterLifeForJava
* 说明:1.思路见程序下面的图
* 2.未经大量反复测试
* 3.必有更好更精简方式,你可以写的更好
*/
public class Test {
//简单测试下
public static void main(String[] args) {
int test1[] = new int[]{3,1,1,3,5,1,6,8,1,4,6,2,6};
System.out.println(core(test1));
int test2[] = new int[]{1,2,3,4,5};
System.out.println(core(test2));
int test3[] = new int[]{5,4,3,2,1};
System.out.println(core(test3));
int test4[] = new int[]{5,4,3,2,1,2,3};
System.out.println(core(test4));
int test5[] = new int[]{5,4};
System.out.println(core(test5));
int test6[] = new int[]{3,9,4,8,1,1,1,3};
System.out.println(core(test6));
}
//核心处理
public static int core(int array[]){
int capacity = 0;//容量
int temp[] = Arrays.copyOf(array, array.length);
StringBuilder sb = new StringBuilder();
if(array.length<3){
return capacity;
}else{
for (int i = 0; i < array.length; i++) {
if(i==array.length-1){
temp[array.length-1] = 0;
sb.append(temp[array.length-1]);
break;
}
if(array[i]>array[i+1]){
temp[i] = 0;//0高
}else{
temp[i] = 1;//1低
}
sb.append(temp[i]);
}
}
int length = sb.toString().length();
Pattern p = Pattern.compile("0+1+0");
Matcher m = p.matcher(sb.toString());
while(m.find()){
capacity+=calculateEach(array, m.start(), m.end()-1);
m.region(m.end()-1, length);
}
return capacity;
}
//计算每组匹配
public static int calculateEach(int array[],int start,int end){
int temp = 0;
int count = 0;
if(array[start]>=array[end]){
temp = array[end];
}else{
temp = array[start];
}
for (int i = start+1; i < end; i++) {
//特殊处理类似5,4,7,8,9的情况
count+=((temp-array[i]<=0)?0:(temp-array[i]));
}
return count;
}
}
- 大小: 145.8 KB
分享到:
相关推荐
平均注水算法是一种简单的功率分配策略,它假设所有子载波的信噪比相同,将可用功率均匀分配给每个子载波。虽然这种方法实现简单,但在实际应用中,由于信道条件的差异,可能会导致部分子载波功率浪费或者性能受限。...
MATLAB是Matrix Laboratory的缩写,它提供了丰富的内置函数和工具箱,支持矩阵和数组操作,使得编写注水算法变得相对简单。在MATLAB中,我们可以利用其强大的数值计算能力和面向对象的编程特性,构建高效的注水测试...
《水倒水功率分配与注水算法解析》 在信息技术领域,我们经常遇到各种各样的问题,其中一种是资源的优化分配,例如功率分配。在本案例中,“Water_Pouring_water_Pouring_功率分配_注水_individual8gp_注水算法.zip...
下面是一个简单的Matlab代码示例,用于模拟MIMO系统中注水算法的应用: ```matlab clear all close all clc nt_V = [1 2 3 2 4]; % Transmitter antennas nr_V = [1 2 2 3 4]; % Receiver antennas N0 = 1e-4; % ...
MATLAB是进行数值计算和算法开发的强大工具,其简洁的语法和丰富的库函数使得实现水填注算法变得相对简单。在`waterfill2.m`和`waterfill3.m`这两个文件中,我们可看到两种不同的实现方式。虽然核心逻辑相同,但实现...
下面是一个简单的Matlab代码示例,用于模拟MIMO系统中注水算法的应用: ```matlab clear all close all clc nt_V = [1 2 3 2 4]; % Transmitter antennas nr_V = [1 2 2 3 4]; % Receiver antennas N0 = 1e-4; % ...
下面是一个简单的Matlab代码示例,用于模拟MIMO系统中注水算法的应用: ```matlab clear all close all clc nt_V = [1 2 3 2 4]; % Transmitter antennas nr_V = [1 2 2 3 4]; % Receiver antennas N0 = 1e-4; % ...
注水算法的概念来源于物理学中的热力学,形象地比喻为在不等高度的容器中注入水,使得水面平齐,即在功率分配中优先满足高信噪比(SNR)信道的功率需求,直到所有信道的信噪比相等。这种策略充分利用了信道的差异性...
描述中提到的"平均功率下"的信道容量比较,可能指的是在总发射功率限制不变的情况下,比较应用注水算法和简单平均功率分配方式对系统信道容量的影响。平均功率分配通常是指将可用功率均匀分配给所有信道,而这种方法...
word文档中贴有MIMO功率分配注水原理算法的Matlab程序,以及仿真结果,简单介绍了一下注水原理和平均功率分配算法下的信道容量公式
"基于改进粒子群算法的油田注水管网优化设计" 本文主要研究了基于改进粒子群算法的油田注水管网优化设计。油田注水管网是一个复杂的网络系统,由点集、边集构成,具有拓扑结构。整个注水系统的投资费用主要包括所...
综上所述,粒子群算法在注水管网摩阻系数校正方面展现出了巨大的潜力,能够有效提高模型校正的准确性,优化管网性能。随着算法的不断完善和实际应用的深入,未来有望在油气田地面工程的其他领域得到更广泛的应用。
根据Goldsmith的Wireless Communications第十章MIMO里面的知识点写的,简单实用。这个是MATLAB函数文件。
- EABC算法具有简单易实现、鲁棒性强、适应性广等优点,能处理多模态、非线性的优化问题。 - 然而,如何有效控制算法的探索与开发平衡,避免陷入局部最优,以及如何快速收敛到全局最优,是EABC算法需要面临的挑战...
首先利用公平性的子载波分配方法为认知用户分配子载波,然后利用子载波分配结果,将复杂的多用户资源分配问题转化为简单的单用户功率分配问题,并利用一种复杂度较低的线性封顶注水算法对子载波功率的分配进行求解。...
与其他优化算法相比,粒子群算法规则较为简单,易于实现,并且没有交叉、变异等复杂的操作过程。 然而,标准粒子群算法在对最优粒子的跟踪方法上存在问题。因为粒子群算法对最优粒子的跟踪本质上是按照站点序号进行...
这是因为改进后的算法减少了迭代次数和计算量,特别是在子载波功率分配阶段采用了更为简单的注水原则。 ##### 4.2 复杂度分析 改进的功率分配算法相较于最优迭代注水功率分配算法,在每次迭代过程中只需要较少的...
8. **对比遗传算法**:PSO算法相比遗传算法,没有个体杂交和变异操作,参数调整简单,收敛速度更快。在油田管网优化问题中,改进的PSO算法表现出了更好的效果。 综上所述,粒子群优化算法在油田管网优化中的应用...
PSO算法具有简单易实现、参数少等特点,在解决非线性优化问题方面表现出色。 #### 三、算法原理 在粒子群优化算法中,每个“粒子”代表着解空间中的一个可能解。这些粒子在解空间中“飞行”,通过迭代不断调整自己...