一个序列的平衡点是这样的,它的左边的所有的元素的和应该等于右边的所有的元素的和,比如 在下面的序列A:A[0]=-7 A[1]=1 A[2]=5 A[3]=2 A[4]=-4 A[5]=3 A[6]=0 3是一个平衡点因为: A[0]+A[1]+A[2]=A[4]+A[5]+A[6] 6也是一个平衡点因为: A[0]+A[1]+A[2]+A[3]+A[4]+A[5]=0 (零个元素的和是零) 索引7不是平衡点,因为它不是序列A的有效索引,如果你仍然不是很清楚,那么这里给出了明确的定义: 当且仅当0 ≤ k ≤ n 并且
Σ m=0
k −1 A[m]=Σ m=k+1
n A[m] 时,
整数k是序列A[0],A[1],...,A[n] 的平衡点,这里 我们假定零个元素的和为零。 请写一个函数,返回给定序列的平衡点(任意一个)如果没有平衡点则返回-1,假设这个序列可达到非常大。要用static public int equi(int a[])
Σ m=0
k −1 A[m]=Σ m=k+1
n A[m] 时,
整数k是序列A[0],A[1],...,A[n] 的平衡点,这里 我们假定零个元素的和为零。 请写一个函数,返回给定序列的平衡点(任意一个)如果没有平衡点则返回-1,假设这个序列可达到非常大。要用static public int equi(int a[])
解决方案 »
- java多线程的情况下如何进行调试?
- 学习java
- 初试过了 后天复试 公司是做游戏的 用java作里面的一些模块 一般都用java作什么模块啊? 大家给点例子 越多越好
- 这种工作环境要不要去
- 关于用StringTokenizer类的一个循环出现的小问题
- 怎样理解equals()方法.
- 又被简单的问题卡住了,谁来帮帮我吧
- 大家都用什么写java的源程序??出过notepad!!
- java有什么容器可以实现这样的要求?在线等!
- 请问如何屏蔽网页中代码?如何使用户无法从IE保存网页文件?
- 求一个正则表达式
- “Sat Jun 27 22:59:38 CST 2009 ”怎样转换成这种格式“2009-6-27 22:59:38”
public static void main(String[] args){
int[] a={-7,1,5,2,-4,3,0};
System.out.println("equi: "+equi(a));
}
public static int equi(int[] a){
int leftSum=0,rightSum=0; //leftSum平衡点左边元素之和,rightSum平衡点右边元素之和.
int equiPoint=0; //假设平衡点为0
for(int i=1;i<a.length;i++){ //先把右和求出来
rightSum+=a[i];
}
if(leftSum==rightSum) return equiPoint;
for(equiPoint=1;equiPoint<a.length;equiPoint++){
leftSum=leftSum+a[equiPoint-1]; //新的左和为原来左和加平衡点左边的元素.
rightSum=rightSum-a[equiPoint]; //新的右和为原来的右和减支平衡点的元素
if(leftSum==rightSum){
break;
}
}
if(equiPoint<a.length) return equiPoint;
return -1;
}
}
int leftSum=0,rightSum=0; //leftSum平衡点左边元素之和,rightSum平衡点右边元素之和.
int equiPoint=0; //假设平衡点为0
for(int i=1;i<a.length;i++){ //先把右和求出来
rightSum+=a[i];
}
我很伤心,给出具体算法,这一步我也看不懂