算法描述:
擂台上怎样决定出最后的优胜者?
先找一个人站在台上,第二个人上去与之比武,获胜者留在擂台上。再上去第三个人,与台上的人(即刚才的得胜者)比武,胜者留在台上,败者下台,直到所有的人都比试过后,最后留在擂台上的即是冠军!
应用:
求一组数据中的最大值或者最小值
问题描述:
有一个2*3的矩阵,求其中的最大值(最小值),并输出其所在的行号以及列号
代码如下:
#include<stdio.h>
#include<stdlib.h> //system
int main()
{
int a[2][3] = {{11,22,33},{77,66,55}};
int max = 0;//第一个站在擂台上的人
int i; //行号循环因子
int j; //列循环因子
int row; //记录最大值所在的行
int col; //记录最大值所在的列
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
if(max < a[i][j]) //胜者留在擂台上
{
max = a[i][j];
row = i + 1;
col = j + 1;
}
}
}
printf("the biggest is %d,it's row is %d,it's col is %d\n",max,row,col);
system("pause");
return 0;
}
要是输出每一行的最大值该怎样修改呢?
#include<stdio.h>
#include<stdlib.h> //system
int main()
{
int a[2][3] = {{11,22,33},{77,66,55}};
int max = 0;//第一个站在擂台上的人,
int i; //行号循环因子
int j; //列循环因子
int row; //记录最大值所在的行
int col; //记录最大值所在的列
for(i=0;i<2;i++)
{
max = 0;//每一行比较前设为0,排除上一行最大值的影响
for(j=0;j<3;j++)
{
if(max < a[i][j]) //胜者留在擂台上
{
max = a[i][j];
row = i + 1;
col = j + 1;
}
}
printf("the biggest of row %4d is %4d,it's row is %4d,it's col is %4d\n",i+1,max,row,col);//每行比较结束后将结果输出
}
system("pause");
return 0;
}
daaaaaa