如何计算二维数组中任意几项之和?

陈夏明 2015-08-30 06:30:38


如图,请问应该如何计算二维数组(如该表)中,任意四项的和。
...全文
319 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
三仙半 2015-08-31
  • 打赏
  • 举报
回复

/**
 *
 * @author zys59三仙半(QQ:597882752)<br>
 *         创建时间:rows*cols15年8月31日 上午8:44:38
 */
public class SimpleTest3 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		new SimpleTest3().getSum();
	}

	public void getSum() {
		//二维数组中的行数
		int rows = 4;
		//二维数组的列数
		int cols = 5;
		//二维数组中元素的个数
		int len = rows * cols;
		//这个设置要计算的二维数组的内容
		int[][] nums = new int[rows][cols];
		for (int i = 0; i < rows; i++) {
			for (int j = 0; j < cols; j++) {
				nums[i][j] = i * cols + j;
			}
		}
		Point pa, pb, pc, pd;
		//任意4个数的和
		float sum = 0;
		//以下四重循环是主体算法,其核心思路是完成20个元素取4个的组合
		for (int a = 0; a < len - 3; a++) {
			pa = getPoint(a);
			sum = nums[pa.x][pa.y];
			for (int b = a + 1; b < len - 2; b++) {
				pb = getPoint(b);
				sum += nums[pb.x][pb.y];
				for (int c = b + 1; c < len - 1; c++) {
					pc = getPoint(c);
					sum += nums[pc.x][pc.y];
					for (int d = c + 1; d < len; d++) {
						pd = getPoint(d);
						sum += nums[pd.x][pd.y];
						//这里根据项目要求处理结果
						System.out.println("(" + pa.x + "," + pa.y + ")+("
								+ pb.x + "," + pb.y + ")+(" + pc.x + "," + pc.y
								+ ")+(" + pd.x + "," + pd.y + ")=" + sum);
					}
				}
			}
		}
	}

	//根据二维数组的元素的行优先序号,计算其行号和列号
	public Point getPoint(int v) {
		Point p = new Point();
		p.x = v / 5;
		p.y = v % 5;
		return p;
	}
}
zhuangqingch 2015-08-31
  • 打赏
  • 举报
回复
如果四项的位置是确定的(硬编码写在代码中或通过控制台输入),直接根据i和j的值能直接取出对应值出来计算(如数据int[][] arrr,用arr[i][j]取出计算即可) 如果楼主是要模拟每次取出任意四项计算。则可以采用Random来动态生成i和j的值(要注意重复问题),Random类的使用可以参考这篇博文:java Random类详解

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧