csp练题记录(C语言)201909-1小明种苹果

csp练题记录(C语言,编译器dev c++)201909-1小明种苹果

一、 题目描述

在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述

二、思路分析

开始时纠结于|aij|<=10^6到底什么意思,看了博客后知道这是一个对输入数据规模的控制。我们可以把输入的疏果数看成是一个表,表内元素的值即aij的值有规定。开始还误认为是说的表的规模,设了a[1000][1002]的数组,着实憨憨。。。这个可以不予考虑,数据类型直接设为int就够了(水平不够,深入不了-_-#)。
后来找到了dalao的博客看了(文后链接),发现这道题没必要对输入的数据进行一一存储,把数据看作水流的话我们没必要建坝把水给屯起来(题目也没要求),直接记一下水位什么的特征(题中的T,k,p)就好了。
输入接收N:总苹果棵树,M:进行几轮疏果操作。
对疏果操作后所有苹果树上剩余的所有苹果总数T:就是除了N、M外所有接收数据的代数和。
对于p、k,它俩都是被疏果最多的那棵苹果树的具有的值。
p:疏果最多的苹果树的总疏果数,从输入来看,它就是第i行输入的M+1个数中第2~第M+1个数,共M个数之和。
k:疏果最多苹果树的编号,显然,找到p,k也就找到了。

三、代码

问题代码:(用数组存了输入数据,运行有问题,不知道咋改,望dalao们不吝赐教)

#include<stdio.h>
int apples[1000][1000]={0};
int pick[1000]={0};
int tree[1000]={0};
int main()
{
 int  N,M;
 scanf("%d %d",&N,&M);
 int T=0,k,p;
 int i,j;
 //输入初始苹果树及统计疏果操作总数(负数) 
 for(i=0;i<N;i++)
 {
  scanf("%d",&tree[i]);
  for(j=0;j<M;j++)
  {
   scanf("%d",&apples[i][j]);
   pick[i]=apples[i][j]+pick[i];
  }
 }
 //
 p=pick[0];
 k=1;
 for(i=0;i<N;i++)
 {
  if(pick[i]>p)
  {
   p=pick[i];
   k=i+1;
  }
 }
 for(i=0;i<N;i++)
 {
  T=tree[i]+pick[i];
 }
 p=-pick[k-1];
 printf("%d %d %d",T,k,p);
 return 0;
}

三、2 正确代码

#include<stdio.h>
int main()
{
 int N,M;
 int T,k,p=0;
 int apples;
 scanf("%d%d",&N,&M);
 int i,j,pick=0;
 //输入过程中已将疏果后总数进行累加,存为T
 //在第i行输入中,共有M+1个数,每一棵苹果树疏果总数为后M个数累加之和 
 for(i=0;i<N;i++)
 {
  for(j=0;j<M+1;j++)
  {
   scanf("%d",&apples);
   T+=apples;
   if(j!=0)
   {
    pick=pick-apples;//pick=pick+apples; 
   }
  }
  if(pick>p)//if(pick<p)
  {
   p=pick;
   k=i+1;
  }
  pick=0;
 }
 printf("%d %d %d",T,k,p);//printf("%d %d %d,T,k,-p");
 return 0;
}

注意到p的来源是非正的,所以//注释内有另一种写法。在这里插入图片描述

四、参考博客

(https://blog.csdn.net/tigerisland45/article/details/103231149)
ps:个人编程能力极弱,欢迎大家友好批评交流(◦˙▽˙◦)!

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值