演算法題,輸入一個矩陣,輸出每一列最大的兩個數
阿新 • • 發佈:2018-11-12
#include <iostream> using namespace std; void search(int a[][5] , int n){ //一個5行5列的矩陣 int max[2][5]; //分別表示前一個最大的數和後一個最大的數 int index[2]; index[0] = index[1] = 0; //用來記錄兩個最大數的索引 for(int i=0;i<5;i++){ //對每一列都要找那個數 max[0][i] = a[0][i]; max[1][i] = a[0][i]; index[0] = index[1] = 0; for(int j=1;j<n;j++){ //遍歷每一行 //max[0]記錄次大的數 //max[1]記錄最大的數 if(a[j][i] > max[0][i] && a[j][i] > max[1][i]){ if(index[1] != 0){ //這個時候要先把max[1]的值給max[0] max[0][i] = max[1][i]; index[0] = index[1]; } max[1][i] = a[j][i]; index[1] = j; } else if(a[j][i] > max[0][i]){ //這個時候要把max[1]的值給max[0] max[0][i] = a[j][i]; index[0] = j; } } //接下來判斷哪個行號大,大的在下面 if(index[0] > index[1]){ //交換max的值 int temp = max[0][i]; max[0][i] = max[1][i]; max[1][i] = temp; } } for(int i=0;i<5;i++) cout<<max[0][i]<<" "; cout<<endl; for(int i=0;i<5;i++) cout<<max[1][i]<<" "; cout<<endl; } int main(){ int a[4][5]; for(int i=0;i<4;i++) for(int j=0;j<5;j++) cin>>a[i][j]; search(a,4); }
執行結果: