【九度OJ】题目1191:矩阵最大值 解题报告
标签(空格分隔): 九度OJ
http://ac.jobdu.com/problem.php?pid=1191
题目描述:
编写一个程序输入一个mXn的矩阵存储并输出,并且求出每行的最大值和每行的总和。
要求把每行总和放入每行最大值的位置,如果有多个最大值,取下标值最小的那一个作为最大值。
最后将结果矩阵输出。
输入:
输入的第一行包括两个整数m和n(1<=m,n<=100),分别代表矩阵的行和列的维数。
接下来的m行每行有n个数,代表矩阵的元素。
输出:
可能有多组测试数据,对于每组数据,输出按题目要求执行后的矩阵。
样例输入:
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
Ways
这个题很简单,我直接对每行进行循环一次就完成了。把最大值所在的位置默认为第一个元素位置,如果后面的元素比这个位置的元素大,就交换位置。每次输入都统计sum,这一行结束之后,把最大元素的位置放入sum即可。
#include<stdio.h>
int main() {
int m, n;
while (scanf("%d%d", &m, &n) != EOF) {
int nums[m][n];
for (int i = 0; i < m; i++) {
int p = 0, sum = 0;
for (int j = 0; j < n; j++) {
scanf("%d", &nums[i][j]);
sum += nums[i][j];
if (nums[i][p] < nums[i][j]) {
p = j;
}
}
nums[i][p] = sum;
bool isFirst = true;
for (int j = 0; j < n; j++) {
if (isFirst) {
printf("%d", nums[i][j]);
isFirst = false;
} else {
printf(" %d", nums[i][j]);
}
}
printf("\n");
}
}
return 0;
}
Date
2017 年 3 月 19 日