2019年9月CCF CSP 认证题解第一题

小明种苹果(apple)

【题目描述】

小明在他的果园里种了一些苹果树。为了保证苹果的品质,在种植过程中要进行若干轮疏果操作,也就是提前从树上把不好的苹果去掉。第一轮疏果操作开始前,小明记录了每棵树上苹果的个数。每轮疏果操作时,小明都记录了从每棵树上去掉的苹果个数。在最后一轮疏果操作结束后,请帮助小明统计相关的信息。

【输入格式】

从标准输入读入数据。
第 1 行包含两个正整数 N 和 M,分别表示苹果树的棵数和疏果操作的轮数。
第 1 + i 行(1 ≤ i ≤ N),每行包含 M + 1 个整数 ai0, ai1, . . . , aiM。其中 ai0 为正整数,表示第一轮疏果操作开始前第 i 棵树上苹果的个数。ai j(1 ≤ j ≤ M)为零或负整数,表示第 j 轮疏果操作时从第 i 棵树上去掉的苹果个数。如果为零,表示没有去掉苹果;如果为负,其绝对值为去掉的苹果个数。
每行中相邻两个数之间用一个空格分隔。

【输出格式】
输出到标准输出。

输出只有一行,包含三个整数 T 、k 和 P。其中:

  • T 为最后一轮疏果操作后所有苹果树上剩下的苹果总数(假设苹果不会因为其他原因减少);
  • K 为疏果个数(也就是疏果操作去掉的苹果个数)最多的苹果树编号(如有并列, 输出满足条件的最小编号);
  • P 为该苹果树的疏果个数。

相邻两个数之间用一个空格分隔。输入数据保证是正确的,也就是说,每棵树在全 部疏果操作结束后剩下的苹果个数是非负的。

【样例 1 输入】
3 3
73 -8 -6 -4
76 -5 -10 -8
80 -6 -15 0

【样例 1 输出】
167 2 23

【样例 1 解释】

第 1 棵苹果树的疏果个数为 8 + 6 + 4 = 18,第 2 棵为 5 + 10 + 8 = 23,第 3
棵为 6 + 15 + 0 = 21, 因此最后一轮疏果操作后全部苹果树上的苹果个数总和为
(73 − 18) + (76 − 23) + (80 − 21) = 167,疏果个数最多的是第 2 棵数,其疏果个数为 23。

【样例 2 输入】
2 2
10 -3 -1
15 -4 0

【样例 2 输出】
17 1 4

【样例 2 解释】

两棵树的疏果个数均为 4,应该输出编号最小的第 1 棵树

using namespace std;

int main()
{
    int m,n;
    cin>>m>>n;
    int a[m][n+1];
    for(int i=0;i<m;i++)
        for(int j=0;j<n+1;j++)
        cin>>a[i][j];
    int allkey=0;
    for(int i=0;i<m;i++)
        for(int j=0;j<n+1;j++)
        allkey = allkey + a[i][j];
    int b[m];
    for(int k=0;k<m;k++)
        b[k]=0;
    for(int k=0;k<m;k++)
        for(int j=1;j<n+1;j++)
            b[k]=b[k]-a[k][j];//
    int maxx=b[0];
    int p=0;
    int t=0;
    while(p<m){
        if(maxx<b[p]) { maxx = b[p];t=p;}
        p++;
    }
    t++;
    cout<<allkey<<" "<<t<<" "<<maxx;
    return 0;
}

上一篇:ccf题目:打酱油(C语言100分代码)


下一篇:CCF计算机认证考试201709-2:公共钥匙盒 非算法弱鸡版