题目背景:
代码如下:
#include<iostream>
#include<cmath>
using namespace std;
int main(void)
{
int n, m;
scanf("%d%d",&n,&m);
int count = 0;//苹果个数总数
int tempn = n;
int min;//疏果最多的苹果树编号
int maxnumber = 0;//疏果最多苹果树疏果个数
while(tempn--)//每课树轮一次 每次处理总数,记录最小编号(n-tempn),
{
int tempcount;
scanf("%d",&tempcount);
count += tempcount;//记录苹果个数
int temp_maxnumber = 0;
int tempa;
for (int i = 1;i<=m;i++)
{
scanf("%d", &tempa);
temp_maxnumber += abs(tempa);//每棵树疏果个数(正数)
}
count -=temp_maxnumber;//苹果总数要扣掉疏果个数
if(temp_maxnumber>maxnumber)//判定疏果最多苹果树疏果个数 与 疏果最多的苹果树编号
{
maxnumber = temp_maxnumber;
min = (n - tempn);
}
}
printf("%d %d %d\n", count, min, maxnumber);
return 0;
}
题目分析:
只需要循环处理,每次接受一棵树的数据进行计算,不断比较最大值即可。