打擂臺演算法

zyh_helen發表於2015-04-06

演算法描述

擂臺上怎樣決定出最後的優勝者?

        先找一個人站在臺上,第二個人上去與之比武,獲勝者留在擂臺上。再上去第三個人,與臺上的人(即剛才的得勝者)比武,勝者留在臺上,敗者下臺,直到所有的人都比試過後,最後留在擂臺上的即是冠軍!

應用

求一組資料中的最大值或者最小值

問題描述

有一個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


相關文章