`
only_java
  • 浏览: 112408 次
  • 性别: 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
分享到:
评论

相关推荐

    线性表操作 栈和队列的应用 多维数组和串

    在C语言中,多维数组的声明和使用方式类似于一维数组,但可以指定多个维度的大小。 字符串在编程中经常用一维数组或特定的结构来表示,它是一串字符的序列。在C语言中,字符串以空字符`\0`作为结束标志。 总的来说...

    python多维数组切片方法

    在Python中,NumPy库提供了一套完整的多维数组切片方法,允许用户方便地从数组中提取需要的数据片段。接下来,我们将详细探讨如何在Python中使用NumPy库对多维数组进行切片操作。 首先,多维数组通常是由多个一维...

    详解Numpy中where()函数及其多维数组的应用

    内容概要:本文档全面介绍了Numpy中的where()函数,从基本的概念到具体的案例实现,如条件判断和数组广播的应用,涵盖了一维到多维数据结构的各种操作技巧。 适合人群:对Python科学计算有兴趣的数据科学家、工程师...

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

    在数据结构的学习过程中,理解和应用数组以及广义表是基础而又重要的环节。尤其在C语言编程环境中,这两种数据结构能够帮助我们以结构化的方式处理和组织数据。本实验名为“数组和广义表”,不仅旨在加深我们对数组...

    C#数组遍历

    如果你熟悉C#的LINQ(Language Integrated Query),也可以使用扩展方法`Select()`和`ToList()`遍历数组。 ```csharp foreach (int number in numbers.Select(n =&gt; n)) { Console.WriteLine(number); } ``` 或者 `...

    Delphi-数组定义及代码实现-Delphi数组定义及初始化详解

    Delphi-数组定义及代码实现 内容概要:详细讲解了在Delphi中定义和使用各种数组的方法,特别是不同形式...此外还对比讨论了一维与多维数组的特点和各自的适用场合,便于开发者根据不同需求选择合适的技术手段解决问题。

    数组和指针学习资料

    在《彻底搞定C指针》这本书中,读者将深入理解指针的高级概念,包括指针的算术运算、指针数组、多维数组以及动态内存分配等。C语言指针精髓可能涵盖如何安全高效地使用指针,避免常见的指针错误,比如空指针解引用、...

    MATLAB数组定义.md

    2. **多维数组操作**:熟悉如何创建更高维度的数组,并尝试对其进行索引和切片操作。 3. **内置函数使用**:学习并使用MATLAB提供的各种内置函数,如`size`, `length`, `reshape`等,来处理数组。 4. **实际应用**:...

    实验8 数组综合应用(1).zip

    这表明实验可能涵盖了之前学习的基础知识,并将其应用于更复杂的场景,如多维数组、动态数组、数组排序、查找算法等。 从压缩包内的文件名称来看: 1. 10360_1.c、10360_2.c、10359.c、10358.c、10361.c:这些文件...

    Python数据分析应用:数组的转置和轴对称.pptx

    数组的转置和轴对称是两种基本但非常实用的数组操作,它们在处理多维数据时起到关键作用。本讲将详细探讨这两个概念以及相关的通用函数。 首先,让我们理解什么是数组的转置。在数学和计算机科学中,矩阵的转置是指...

    数组和集合对象(一) Array练习

    练习ArrayEx的目的在于让你熟悉数组的基本操作,理解其工作原理,并能熟练应用到实际项目中。通过编写代码并运行,你会更深刻地理解数组的特性和用法,这在C#编程中是非常基础且重要的技能。 在实践中,记得不断...

    File-Reader:我做了一件小事,将文件中的所有单词放入动态分配的多维数组中

    "File-Reader"项目就是这样一个示例,它旨在从文件中读取单词,并将它们存储到动态分配的多维数组中。这个过程涉及到几个关键的C++知识点,包括文件I/O操作、字符串处理、内存管理和数据结构的使用。 首先,让我们...

    Java的数组.docx

    在Java中,数组的使用不仅限于上述内容,还包括多维数组、数组的复制、排序算法(如快速排序、选择排序等)、查找算法(如二分查找)等更高级的应用。熟悉这些概念,将有助于编写出更加高效和可维护的代码。

    C语言实验指导书-学生版

    了解多维数组的基本概念:多维数组的定义、多维数组的应用。 2. 了解多维数组的操作:多维数组的赋值、多维数组的访问等。 实验十:函数应用 * 实验目的:掌握C语言的函数应用。 * 实验步骤: 1. 了解函数的...

    华智191 袁祖强_数组_

    递进练习通常从简单的示例开始,例如遍历数组并打印所有元素,然后逐渐增加难度,如实现排序算法(如冒泡排序、选择排序、插入排序等)和查找算法(线性查找、二分查找等)。这些练习旨在帮助学习者熟悉数组的使用并...

    第4章 数组的应用(课后练习题答案)-20181

    - 多维数组的定义需要指定至少一个维度的长度,如`int a[3][4]`。在某些情况下,可以使用不完整的维度定义,如`int a[][3]`,但需要在初始化时提供完整的维度信息。 理解并掌握这些知识点对于编写有效的C++程序至...

    LabVIEW元素与数组大量vi实例.zip_LabVIEW 数组_labview元素组合_labview数组例子_数组vi_程

    通过学习和实践压缩包中的“LabVIEW元素与数组大量vi实例”,用户不仅可以熟悉LabVIEW的基本操作,还能掌握如何利用数组来高效处理数据,提高编程能力。每一个VI实例都是一个独立的案例,涵盖了不同的数组操作和元素...

    C++全套联系题 数组 指针 函数 类 派生

    学习者应了解如何声明、初始化、访问和操作数组,包括一维、二维及多维数组。同时,要理解数组与指针之间的关系,如数组名作为指针常量的用法。 **指针**是C++中的强大工具,它存储内存地址,允许直接对变量进行...

    推荐课程 完整版优质java教程 java精品教学课件 Java语言程序设计 第5章 数组(共58页).ppt

    2. 多维数组:多维数组通常用于表示表格或矩阵数据,其中最常见的就是二维数组。二维数组声明类似`类型标识符 数组名 [ ][ ];`或`类型标识符 [ ][ ] 数组名;`。例如,声明一个3x4的二维整型数组`int a[][];`,然后...

Global site tag (gtag.js) - Google Analytics