一.题目描述
有一个3*4的矩阵,要求求出其中最大值的那个元素的值,以及其所在的行号和列号
比如:给定一个3*4的矩阵如下
输出结果:最大值为 12 ,行号为3, 列号为2
二.思路分析
打擂台算法:先思考一下在打擂台的时候,如何确定最后的优胜者的,先找出任意一个人站在台上,第二个人上去与之比武,胜利的人留在台上,再上去第三个人与第二个人比武,胜者留在台上,败者下台,以后每一个人都与当时留在台上的人比武,知道所有人都上台比过为止,最后留下的就是冠军。
本题也是用“打擂台算法”,先让arr[0][0]成为擂主,把它的值赋给遍量max,max用来存放当前已知的最大值,然后让下一个元素arr[0][1]与max比较,如果arr[0][1]>max,则表示arr[0][1]是已经比过的数据中最大的。把它的值再赋给max,以后依次处理,值最大的赋值给max,直到全部比完后,max就是最大的值。
三.完整代码
#include<stdio.h>
int main()
{
int arr[3][4] = {0,2,213,123,3,1,5,4,33,23,21,44};
int max = arr[0][0];//暂且先认为第一个值是最大值
int row = 0;//行号
int col = 0;//列号
int i, j = 0;
for (i = 0;i < 3;i++)//行
{
for (j = 0;j < 4;j++)//列
{
if (arr[i][j] > max)
{
max = arr[i][j];//换上新的擂主
row = i;
col = j;
}
}
}
printf("最大值是%d\n行号是%d\n列号是%d", max, row, col);
return 0;
}