CCF CSP模拟题 小明种苹果(C++)

2019-9 小明种苹果

ccf csp刷题记录,方法不一定是最好的,只是多提供一种解题的思路和方法。


题目
在这里插入图片描述
解题运用知识:

  • 创立苹果树结构体
  • new与delete的使用
  • 找最大数算法

源代码:

#include<iostream>
using namespace std;

struct aptree {
  int init;   //苹果树初始苹果数量
  int *cutnum;  //new出一个空间来记录每一轮疏掉的苹果数量
  char treenum;  //苹果树的编号
  int totalcut;  //一共疏掉的苹果数量
  int total;  //该苹果树经过疏果后剩下的果子总量
};

int find_maxcut(aptree *ap , int num)
{
  int stand = ap[0].totalcut;
  int treenum = 0;  
  for (int i = 1;i < num;i++)
  {
    if (ap[i].totalcut > stand)
    {
     stand = ap[i].totalcut;
     treenum = i;
    }
  }
  return treenum;  //返回疏果数量最多的树的编号(注意,由于数组的从零开始,这里的编号加1才是真正的编号)
}
int main()
{
  int treenums;
  cin >> treenums;
  int turn;
  cin >> turn;
  int init, cutnums;
  int totalcut = 0;
  int totalnum = 0;
  aptree *ap;
  ap = new aptree[treenums];
  for (int i = 0;i < treenums;i++)
  {
    cin >> init;
    ap[i].init = init;
    ap[i].cutnum = new int[turn];
    for (int j = 0;j < turn;j++)
    {
      cin >> cutnums;
      ap[i].cutnum[j] = cutnums;
      totalcut += cutnums;
    }
    ap[i].totalcut = (-totalcut);  //因为输入疏果数量都是负数,所以这里前面加个-号
    ap[i].total = init + totalcut;
    totalnum += ap[i].total;
    totalcut = 0;
  }
  int finalnum;
  finalnum = find_maxcut(ap, treenums);
  cout << totalnum << " " << (finalnum + 1) << " " << ap[finalnum].totalcut;
  //有new一定要有正确的delete,否则会造成内存泄漏
  for (int i = 0;i < treenums;i++)
  {
    delete[]ap[i].cutnum;  
  }
  delete[]ap;
  return 0;
}

在这里插入图片描述
待续。。。。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值