`
only_java
  • 浏览: 109882 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

熟悉并应用多维数组

    博客分类:
  • j2se
阅读更多
   本文旨在提醒自己数组方面一些要注意的地方,以前数组经常用但也就最多用到2维。最近看到一个北单计算奖金和注数的算法,发现有用到四维数组,看了半天没看懂,自己就开始研究了下。首先这个数组需要保存"过关类型",过关类型对应的单关个数,2关个数,3关等等个数,还要保存该"过关类型"对应关数的场次组合。举个例子:过关类型为"单关"对应数据。
过关类型单场两关三关四关
单关1
3串431


所以应该定义一个四维数组来保存,假设过关类型有上面两种则需要定义一个数组

//2代表过关类型个数   3代表需要保存的数据有三类:过关类型,关数,所有投注组合
int [][][][] arr=new int[2][3][][];


上面只是定义了一个数组,怎样填充数据到这个数组呢?方法如下代码,
//初始化单关数据,刚开始arr[0][0],arr[0][1],arr[0][2]的值都为null,所以最好初始化,方法有很多
		arr[0]=new int[][][]{{{}},{{}},{{}}};//第一种
//		第二种 :一步一步初始化
//		arr[0][0]=new int[][]{{}};//保存过关类型
//		arr[0][1]=new int[][]{{}};//保存关数个数
//		arr[0][2]=new int[][]{{}};//保存所有注数组合,比如单关由第0个位置组成所以就是{0},3串4由3注2关{0,1},{0,2},{1,2}和1注3关{0,1,2}
//		
//		arr[0][0][0]=new int[]{1001};//如果不初始化将报错NullPointerException
		//填充单关数据
		arr[0][0]=new int[][]{{1001}};
		arr[0][1]=new int[][]{{1}};
		arr[0][2]=new int[][]{{0}};
		
		//初始化3串4的数据,同上
		arr[1]=new int[][][]{{{}},{{}},{{}}};
		
//		arr[1][0]=new int[][]{{}};//保存过关类型
//		arr[1][1]=new int[][]{{}};//保存关数个数
//		arr[1][2]=new int[][]{{}};//保存注数
//		
		
		//填充3串4数据
		arr[1][0]=new int[][]{{3004}};
		arr[1][1]=new int[][]{{2,3}};//有两关和三关组成
		arr[1][2]=new int[][]{{0,1},{0,2},{1,2},{0,1,2}};//3注两关及1注三关
		
		
		for(int i=0;i<arr.length;i++)
			for(int j=0;j<arr[i].length;j++)
				for(int k=0;k<arr[i][j].length;k++)
					for(int s=0;s<arr[i][j][k].length;s++)
				              System.out.println("arr["+i+"]["+j+"]["+k+"]["+s+"]="+arr[i][j][k][s]);
		


结果如下:
arr[0][0][0][0]=1001
arr[0][1][0][0]=1
arr[0][2][0][0]=0
arr[1][0][0][0]=3004
arr[1][1][0][0]=2
arr[1][1][0][1]=3
arr[1][2][0][0]=0
arr[1][2][0][1]=1
arr[1][2][1][0]=0
arr[1][2][1][1]=2
arr[1][2][2][0]=1
arr[1][2][2][1]=2
arr[1][2][3][0]=0
arr[1][2][3][1]=1
arr[1][2][3][2]=2




单关的数据结构如下



3串4结构图如下





所以当给定我们过关类型和选择的场次时咋就可以通过这个数组计算出注数

比如:过关类型是3串4,选择比赛场次为1,2,3
投注内容为:比赛1选择"胜","平",比赛2选择"负",比赛3选择"胜"的话,则注数计算为:
投注内容第0个位置arr[1][2][0][0]有两个结果,
总注数=2*1+2*1+1*1+2*1*1=7注
x*x或者x*x*x是指位置上的个数相乘

推算过程:
3串4的投注组合是
arr[1][2]=new int[][]{{0,1},{0,2},{1,2},{0,1,2}};//3注两关及1注三关

因为第0个位置有2结果,其他位置只有1结果,所以是{0,1}有2注 即2*1,{0,2}即2*1,
{0,1,2}即2*1*1
相加之后等于7

好了就这样吧,估计也没表达清楚,无所谓重要的是熟悉了多维数组的使用方法!
  • 大小: 6.3 KB
  • 大小: 10.8 KB
分享到:
评论

相关推荐

    数据结构实验 数组和广义表

    (1)熟悉C语言的上机环境,进一步掌握C语言的结构特点; (2)掌握线数组和广义表储存结构的定义及C语言实现; (3)掌握数组和广义表的各种基本操作; (4)学会利用数组和广义表的基本知识解决实际问题。 三、...

    MATLAB三维数组示例.md

    本文介绍了如何使用MATLAB编写三维数组,并提供了一个简单的示例程序。...参考MATLAB官方文档中的示例代码和案例,学习更多高级的多维数组操作和应用; 探索MATLAB提供的其他功能和工具箱,如信号处理、机器学习等。

    MATLAB实验五实验报告

    在前面熟悉matlab语言编程的基础上,掌握多维数组的应用,并接触学习matlab在数字图像处理中的应用。 二、实验内容 数字图像的打开、显示、灰度直方图统计及其均衡化、去燥、分割、边界提取等基础算法实验 1. 每个...

    leetcode卡-leetcode:leetcode

    leetcode卡leetcode 介绍 数组是数据结构中的基本块之一。 由于字符串只是由字符数组组成,因此它们是相似的...了解多维数组并能使用二维数组; 了解字符串的概念和字符串的不同特征; 能够将两点技术应用于实际问题。

    机器学习SVM作业基于Iris鸢尾花的数据样本实现SVM分类项目源码+报告

    它是一个Python库,提供多维数组对象,各种派生对象(如掩码数组和矩阵),以及用于数组快速操作的各种API,有包括数学、逻辑、形状操作、排序、选择、输入输出、离散傅立叶变换、基本线性代数,基本统计运算和随机...

    深入浅出,C++新手绝对教科书,PPT,WORD

    第十课内容:多维数组,函数指针与指针函数,动态内存分配 第十一课内容:机构体,共用体,枚举类型 第十二课内容:类的基本概念 第十三课内容:类的应用 第十四课内容:继承与派生 第十五课内容:多态性 第十六课...

    Python编程深度学习计算库之numpy

    最近比较热门的深度学习,比如在神经网络的算法,多维数组的使用是一个极为重要的场景。如果你熟悉tensorflow中的tensor的概念,你会非常清晰numpy的作用。所以熟悉Numpy可以说是使用python进行深度学习入门的一个...

    Visual C# 2005程序设计自学手册 随书源码第一部分(共三部)

    4.2.4 多维数组 71 4.3 动态数组 72 4.3.1 动态数组的声明 72 4.3.2 声明动态数组的注意事项 74 4.4 数组的基本操作 74 4.4.1 输入与输出数组 74 4.4.2 如何定位数组 76 4.4.3 如何遍历数组 78 ...

    传智播客扫地僧视频讲义源码

    12_二级指针做输入_第2种内存模型_课堂答疑_多维数组名本质抛砖 13_二级指针做输入_第3种内存模型_传智扫地僧 14_二级指针三种内存模型示意图_传智扫地僧 15_玩转多级指针_传智扫地僧 16_两个辅助指针变量挖字符串...

    Visual C++ 2010入门经典(第5版)--源代码及课后练习答案

    4.3.4 多维数组的动态分配 171 4.4 使用引用 172 4.4.1 引用的概念 172 4.4.2 声明并初始化lvalue引用 172 4.4.3 声明并初始化rvalue引用 173 4.5 字符串的本地C++库函数 174 4.5.1 查找以空字符结尾的字符串...

    asp 完全教程

    但应当注意的是,toArray() 方法将把一个多维的VBArray转换为一维的JScript数组。 &lt;br&gt; 从VBScript中引用JScript数组更为复杂。虽然在VBScript中我们可以直接访问JScript数组相关的 方法和属性,但没有...

    Visual C++ 2005入门经典--源代码及课后练习答案

    4.3.4 多维数组的动态分配 176 4.4 使用引用 177 4.4.1 引用的概念 177 4.4.2 声明并初始化引用 177 4.5 C++/CLI编程 178 4.5.1 跟踪句柄 178 4.5.2 CLR数组 180 4.5.3 字符串 195 4.5.4 跟踪引用...

    C#微软培训资料

    第三章 编写第一个应用程序 .20 3.1 Welcome 程序 .20 3.2 代 码 分 析 .20 3.3 运 行 程 序 .23 .4 添 加 注 释 .25 3.5 小 结 .27 第二部分 C#程序设计基础.28 第四章 数 据 类 型 .28 4.1 值 类 型...

    PHP基础教程 是一个比较有价值的PHP新手教程!

    虽然我在这里没有说明,但是你一样可以轻易的使用多维数组。 // 一个包含两个元素的数组 $a&#91;0&#93; = "first"; $a&#91;1&#93; = "second"; $a&#91;&#93; = "third"; // 添加数组元素的简单方法 // 现在$a&#91;2...

Global site tag (gtag.js) - Google Analytics