题目描述
给定一个 m×n 的矩阵,找出每行的最大值以及每行的总和,并用每行的总和替换掉每行的最大值。
如果有多个最大值,取其中最靠左的那一个作为最大值。
全部替换完毕后,输出新的矩阵。
输入格式
输入包含多组测试数据。
每组数据第一行包含两个整数 m,n 分别代表矩阵的行和列的维数。
接下来 m 行,每行包含 n 个整数,代表矩阵的元素。
输出格式
每组数据输出一个更新后的矩阵。
数据范围
输入最多包含 10 组数据。
1≤m,n≤100,
矩阵元素取值范围 [1,100]。
样例
输入样例:
3 3
1 1 1
1 1 1
1 1 1
3 3
3 2 3
2 3 2
3 2 3
输出样例:
3 1 1
3 1 1
3 1 1
8 2 3
2 7 2
8 2 3
C++ 代码
#include<iostream>
using namespace std;
const int N=110;
int a[N][N];
int main()
{
int n,m;
while(cin>>n>>m)
{
// 读入矩阵,并替换最大值为和
for(int i=0;i<n;i++)
{
int sum=0,max=0,index=0;
for(int j=0;j<m;j++)
{
cin>>a[i][j];
sum+=a[i][j]; // 计算每一行的和
if(a[i][j]>max) // 如果当前值大于最大值
{
max=a[i][j]; // 更新最大值
index=j; // 更新最大值索引
}
}
a[i][index]=sum; // 将最大值max替换为和sum
}
// 输出矩阵
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
cout<<a[i][j]<<' ';
cout<<endl;
}
}
return 0;
}