C++数组进阶——二维数组的应用及行列互换存储思路,擂台法求最大值
2012-03-30 15:58
387 查看
二维数组的定义和引用
一、相关定义
1、 具有两个下标的数组称为二维数组。
2、 一般形式:
类型标识符 数组名[常量表达式][常量表达式]
例如:float a[3][4], b[5][6];
3、 二维数组的排列顺序:按行存放,即在内存中先顺序存放第一行的元素,再存放第二行的元素。【多维数组元素在内存中的排列顺序:第一维的下标变化最慢,最右边的下标变化最快】
4、 二维数组的引用
数组名[下标][下标]
数组元素是左值,可以出现在表达式中,也可以被赋值。
注意:在使用数组元素时,应该注意下标值应在已定义的数组大小的范围内。
定义一个三行四列的整型二维数组:int a[3][4];
严格区别在定义数组时用的a[3][4]和引用元素时的a[3][4]的区别:前者a[3][4]用来定义数组的维数和各维的大小,后者a[3][4]中的3和4是下标值,a[3][4]代表了某个元素。
二、二维数组的初始化
int a [3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
int a [3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
对不分元素赋初值:int a [3][4]={{1},{5},{9 }};
其他元素自动默认为0.
二维数组中第一维的长度可以不指定,但第二维的长度不能省
三、二维数组程序实例:行列互换
将二维数组行列和元素互换,存到另一个二维数组中:
实现如下:
/*
* example.cpp
*
* Created on: 2012-3-30
* Author: yangbo_hbzjk
*/
#include<iostream>
usingnamespace std;
int main()
{
int a[2][3] = {{1,2,3},{4,5,6}};
int b[3][2];
int i,j;
cout<<"array a:"<<endl;
for(i=0;i<=1;i++)
{
for(j=0;j<=2;j++)
{
cout<<a[i][j]<<"";
b[j][i]=a[i][j];
}
cout<<endl;
}
cout<<"array b:"<<endl;
for(i=0;j<=1;j++)
{
cout<<b[i][j]<<"";
cout<<endl;
}
return 0;
}
======================
擂台法求二维数组最大值,即求二维数组矩阵的最值问题:
思路:求最值方法很多,现在使用“打擂台”的算法。
如果有若干人比武,先一个人站在台上,与另一个人交手,
败者下台,胜者留台。依次进行比武。最后留在台上的就是
胜者。
--------------------------------
开始把a[0][0]的值赋给变量max,max就是开始时的擂主,
让后让下一个元素与它进行比较,将二者中最大者保存
在max中,然后再让下一个元素与新的max比较,直到最后一个
元素比完为止。max最后的值就是数组所有元素中的最大值。
程序如下:
//============================================================================
// Name : C++_array.cpp
// Author : yangbo_hbzjk
// Version :
// Copyright : Your copyright notice
// Description : Hello World in C++,
Ansi-style
//============================================================================
#include
<iostream>
using
namespace std;
int main()
{
int a[5][6]={
{56,23,2,3,4,87},{12,13,15,45,26,45},
{99,85,64,56,123,45},{123,456,78,56,45,21},
{25,12,56,35,45,789}
};
int colum=0,row=0,max;
max=a[0][0];
//使max开始时取a[0][0]的值
for(int i=0;i<5;i++)
//从第0行~第2行
{
for(int j=0;j<6;j++)
//从第0列~第3列
{
if(a[i][j]>max)
//如果某元素大于max
{
max=a[i][j];
//max将取该元素的值
row=i;
//记下该元素的行号i
colum=j;
//记下该元素的列号j
}
}
}
cout<<"max="<<max<<endl<<"row="<<row<<endl<<"colum="<<colum<<endl;
return 0;
}
一、相关定义
1、 具有两个下标的数组称为二维数组。
2、 一般形式:
类型标识符 数组名[常量表达式][常量表达式]
例如:float a[3][4], b[5][6];
3、 二维数组的排列顺序:按行存放,即在内存中先顺序存放第一行的元素,再存放第二行的元素。【多维数组元素在内存中的排列顺序:第一维的下标变化最慢,最右边的下标变化最快】
4、 二维数组的引用
数组名[下标][下标]
数组元素是左值,可以出现在表达式中,也可以被赋值。
注意:在使用数组元素时,应该注意下标值应在已定义的数组大小的范围内。
定义一个三行四列的整型二维数组:int a[3][4];
严格区别在定义数组时用的a[3][4]和引用元素时的a[3][4]的区别:前者a[3][4]用来定义数组的维数和各维的大小,后者a[3][4]中的3和4是下标值,a[3][4]代表了某个元素。
二、二维数组的初始化
int a [3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
int a [3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
对不分元素赋初值:int a [3][4]={{1},{5},{9 }};
其他元素自动默认为0.
二维数组中第一维的长度可以不指定,但第二维的长度不能省
三、二维数组程序实例:行列互换
将二维数组行列和元素互换,存到另一个二维数组中:
实现如下:
/*
* example.cpp
*
* Created on: 2012-3-30
* Author: yangbo_hbzjk
*/
#include<iostream>
usingnamespace std;
int main()
{
int a[2][3] = {{1,2,3},{4,5,6}};
int b[3][2];
int i,j;
cout<<"array a:"<<endl;
for(i=0;i<=1;i++)
{
for(j=0;j<=2;j++)
{
cout<<a[i][j]<<"";
b[j][i]=a[i][j];
}
cout<<endl;
}
cout<<"array b:"<<endl;
for(i=0;j<=1;j++)
{
cout<<b[i][j]<<"";
cout<<endl;
}
return 0;
}
======================
擂台法求二维数组最大值,即求二维数组矩阵的最值问题:
思路:求最值方法很多,现在使用“打擂台”的算法。
如果有若干人比武,先一个人站在台上,与另一个人交手,
败者下台,胜者留台。依次进行比武。最后留在台上的就是
胜者。
--------------------------------
开始把a[0][0]的值赋给变量max,max就是开始时的擂主,
让后让下一个元素与它进行比较,将二者中最大者保存
在max中,然后再让下一个元素与新的max比较,直到最后一个
元素比完为止。max最后的值就是数组所有元素中的最大值。
程序如下:
//============================================================================
// Name : C++_array.cpp
// Author : yangbo_hbzjk
// Version :
// Copyright : Your copyright notice
// Description : Hello World in C++,
Ansi-style
//============================================================================
#include
<iostream>
using
namespace std;
int main()
{
int a[5][6]={
{56,23,2,3,4,87},{12,13,15,45,26,45},
{99,85,64,56,123,45},{123,456,78,56,45,21},
{25,12,56,35,45,789}
};
int colum=0,row=0,max;
max=a[0][0];
//使max开始时取a[0][0]的值
for(int i=0;i<5;i++)
//从第0行~第2行
{
for(int j=0;j<6;j++)
//从第0列~第3列
{
if(a[i][j]>max)
//如果某元素大于max
{
max=a[i][j];
//max将取该元素的值
row=i;
//记下该元素的行号i
colum=j;
//记下该元素的列号j
}
}
}
cout<<"max="<<max<<endl<<"row="<<row<<endl<<"colum="<<colum<<endl;
return 0;
}
相关文章推荐
- 二维数组的声明赋值遍历 行列互换 求最大值
- 数组与集合的应用之数组演练(将二维数组中的行列互换)
- 二维数组中找最大值,并且输出此行列的值
- YTU 1050: 写一个函数,使给定的一个二维数组(3×3)转置,即行列互换
- Problem A: 写一个函数,使给定的一个二维数组(3×3)转置,即行列互换
- 二维数组(3×3)转置,即行列互换
- Problem J: 写一个函数,使给定的一个二维数组(3×3)转置,即行列互换
- C++数组应用之特殊矩阵的压缩存储
- C++数组应用之特殊矩阵的压缩存储
- C++数组应用之特殊矩阵的压缩存储
- 写一个函数,使给定的一个二维数组(NXM)转置,即行列互换
- 二维数组在内存中的存储方式和下标与行列的关系
- C++数组进阶——一维数组的应用及起泡法思路
- 二维数组的行列求和以及最大差值
- 二维数组行列互换
- ytu 1050:写一个函数,使给定的一个二维数组(3×3)转置,即行列互换(水题)
- 互换二维数组的行列。要求数组的行数、列数以及各元素均从键盘输入;输出互换前数组内容和互换后数组内容。(要求循环输入进行测试)Java
- C++数组应用之特殊矩阵的压缩存储
- 大型互动应用思路(五)文件存储
- 二维数组行列互换(学习)