題目1200:最大的兩個數時間限制:1 秒 內存限制:32 兆 特殊判題:否 提交:1225 解決:296 題目描述: 輸入一個四行五列的矩陣,找出每列最大的兩個數。 輸入: 輸入第一行包括一個整數n(1<=n<=1000),接下來的四行每行包括五個整數。代表一個四行五列的矩陣,矩陣元素全部是整數。 輸出: 可能有多組測試數據,對於每組數據,按照樣例輸出的格式將每列最大的兩個數輸出,如果最大的兩個數中的一個數在這一列中有多個相同的值,則行值取行值小的那一個。 輸出時要保留原矩陣的行列順序,即在原矩陣中行值小的,在輸出矩陣中的行值依然小。 樣例輸入: 1 1 2 4 9 8 -1 4 9 8 8 12 9 8 7 0 7 8 9 7 0樣例輸出: 12 9 9 9 8 7 8 9 8 8 提示: 每個數字後面都要輸出一個空格 來源: 2005年華中科技大學計算機保研機試真題 [cpp] /********************************* * 日期:2013-2-20 * 作者:SJF0115 * 題號: 九度OJ 題目1200:最大的兩個數 * 來源:http://ac.jobdu.com/problem.php?pid=1200 * 結果:AC * 來源:2005年華中科技大學計算機保研機試真題 * 總結:注意:每個數字後面都要輸出一個空格 **********************************/ #include<stdio.h> #include<stdlib.h> #include<string.h> #include <limits.h> typedef struct Matrixs{ int value;//數值 int row;//行數 }Matrixs; int main() { int i,j,n,k,first; Matrixs Matrix[4][5]; Matrixs Matrix2[2][5]; while(scanf("%d",&n) != EOF){ for(k = 0;k < n;k++){ //輸入數據 for(i = 0;i < 4;i ++){ for(j = 0;j < 5;j++){ scanf("%d",&Matrix[i][j].value); Matrix[i][j].row = i; } } //最大的兩個數放在前兩位 Matrixs temp; for(j = 0;j < 5;j++){ //初始化最小值 Matrix2[0][j].value = INT_MIN; Matrix2[1][j].value = INT_MIN; //每列最大的兩個數 for(i = 0;i < 4;i++){ if(Matrix[i][j].value > Matrix2[0][j].value){ Matrix2[0][j] = Matrix[i][j]; } } for(i = 0;i < 4;i++){ if(Matrix2[0][j].row != Matrix[i][j].row && Matrix[i][j].value > Matrix2[1][j].value){ Matrix2[1][j] = Matrix[i][j]; } } } //保留原矩陣的行列順序 for(j = 0;j < 5;j++){ if(Matrix2[0][j].row > Matrix2[1][j].row){ temp = Matrix2[0][j]; Matrix2[0][j] = Matrix2[1][j]; Matrix2[1][j] = temp; } } //輸出 for(i = 0;i < 2;i++){ for(j = 0;j < 5;j++){ printf("%d ",Matrix2[i][j].value); } printf("\n"); } } } return 0; } /********************************* * 日期:2013-2-20 * 作者:SJF0115 * 題號: 九度OJ 題目1200:最大的兩個數 * 來源:http://ac.jobdu.com/problem.php?pid=1200 * 結果:AC * 來源:2005年華中科技大學計算機保研機試真題 * 總結:注意:每個數字後面都要輸出一個空格 **********************************/ #include<stdio.h> #include<stdlib.h> #include<string.h> #include <limits.h> typedef struct Matrixs{ int value;//數值 int row;//行數 }Matrixs; int main() { int i,j,n,k,first; Matrixs Matrix[4][5]; Matrixs Matrix2[2][5]; while(scanf("%d",&n) != EOF){ for(k = 0;k < n;k++){ //輸入數據 for(i = 0;i < 4;i ++){ for(j = 0;j < 5;j++){ scanf("%d",&Matrix[i][j].value); Matrix[i][j].row = i; } } //最大的兩個數放在前兩位 Matrixs temp; for(j = 0;j < 5;j++){ //初始化最小值 Matrix2[0][j].value = INT_MIN; Matrix2[1][j].value = INT_MIN; //每列最大的兩個數 for(i = 0;i < 4;i++){ if(Matrix[i][j].value > Matrix2[0][j].value){ Matrix2[0][j] = Matrix[i][j]; } } for(i = 0;i < 4;i++){ if(Matrix2[0][j].row != Matrix[i][j].row && Matrix[i][j].value > Matrix2[1][j].value){ Matrix2[1][j] = Matrix[i][j]; } } } //保留原矩陣的行列順序 for(j = 0;j < 5;j++){ if(Matrix2[0][j].row > Matrix2[1][j].row){ temp = Matrix2[0][j]; Matrix2[0][j] = Matrix2[1][j]; Matrix2[1][j] = temp; } www.2cto.com } //輸出 for(i = 0;i < 2;i++){ for(j = 0;j < 5;j++){ printf("%d ",Matrix2[i][j].value); } printf("\n"); } } } return 0; }分享到: