#include #include using namespace std; //此题关键在于存储每行第一个最大数的行列值 typedef struct Matrix { int line;//行 int row;//列 int value;//值 }; int main(void) { int m,n; while(cin >> m >> n) { Matrix matrix[m][n]; Matrix matrix_temp[m];//存储每行之和以及每行第一个最大数的位置 for(int i = 0;i < m;i++) matrix_temp[i].value = INT32_MIN; int sum;//计算每行之和 for(int i = 0;i < m;i++) { sum = 0; for(int j = 0;j < n;j++) { cin >> matrix[i][j].value; matrix[i][j].line = i; matrix[i][j].row = j; sum += matrix[i][j].value; if(matrix[i][j].value > matrix_temp[i].value)//找到每行第一个最大数 matrix_temp[i] = matrix[i][j]; } matrix_temp[i].value = sum; } for(int i = 0;i < m;i++)//对原矩阵重新赋值 { int line = matrix_temp[i].line; int row = matrix_temp[i].row; matrix[line][row].value = matrix_temp[i].value; } for(int i = 0;i < m;i++)//输出 { for(int j = 0;j < n;j++) cout << matrix[i][j].value << ' '; cout << endl; } } return 0; }