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

posted @ 2017-03-19 15:07  负雪明烛  阅读(32)  评论(0编辑  收藏  举报