【九度OJ】题目1191:矩阵最大值 解题报告

【九度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 日

上一篇:九度OJ 1102:最小面积子矩阵 (DP、缓存、剪枝)


下一篇:九度OJ 1020:最小长方形 (基础题)