解题思路:
本题是常规的遍历计算题,我采用的是vector容器和结构体来存储果树的相关参数,然后依次实现计算果树总数、梳果最多的果树编号及数量等功能。
代码如下:
#include <cstdio>
#include <vector>
using namespace std;
struct Tree{
int total;
int kill[1001] = {0}; //梳果操作
int killNum = 0;
int remain;
};
int main(){
int N, M;
scanf("%d%d",&N,&M); //N-苹果颗数,M-梳果次数
vector<Tree>Tlist; //存储果树
for(int i = 0 ; i < N ; i++){ //每颗果树操作
Tree temp;//存储当前果树
scanf("%d",&temp.total); //第一个数是果树数量
for(int j = 0 ; j < M; j++){//记录梳果
scanf("%d",&temp.kill[j]);
temp.killNum += temp.kill[j]; //更新梳果数
}
temp.remain = temp.total + temp.killNum ;//更新剩余苹果数量
Tlist.push_back(temp); //压入果树数组
}
int Total = 0;
for(int i = 0 ; i < N ; i++){
Total += Tlist[i].remain;
}//计算剩余苹果总数
int kill = 0; //记录梳果数量最多的果树
int treeN = 0; //果树编号
for(int i = 0 ; i < N ; i++){
if(kill > Tlist[i].killNum){
kill = Tlist[i].killNum;
treeN = i;
}
}
//进行输出
printf("%d %d %d",Total,treeN+1,-kill);
return 0;
}