csp练题记录(C语言)201909

您所在的位置:网站首页 苹果c语言编译软件 csp练题记录(C语言)201909

csp练题记录(C语言)201909

2024-06-11 15:14| 来源: 网络整理| 查看: 265

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

文章目录 一、问题描述二、思路分析三、代码四、相关链接

一、问题描述

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

二、思路分析

ps:实在是看不懂题目中子任务的描述-_-#,望各dalao不吝赐教。

这道题和上一道一样,关心的是小明种植苹果时果子的变化情况。下面对输出的三个变量做进一步解释: T:所有操作结束后总的苹果树,和上一道题一样,没啥难度。(ps:可参考文后相关链接上一道题的代码) D:发生落果的果树的总棵树。这里的落果说的就是一行数据中第二个接收的正整数(小明重新统计的苹果树)和第一个正整数(该棵果树初始的苹果树)进行了疏果操作后剩下的苹果树不相等。也就是说,我们可以通过改行数据中正负的判断来看是否有落果情况,考虑到一行数据中可能有多个正整数(多次统计苹果树),故我在程序中设置了一个临时变量Di,初始值为0.只要Di不为0,说明发生了落果情况,D加一。 E:N棵果树绕成一个圈后,每相邻三棵都发生了落果,则E数加一。我设了一个一维数组flag[2]用来记录第i棵果树与它前两棵:(i-1)和(i-2)是否有落果情况。类似于移位(或者说队列正准确一点)的思想,该棵的落果情况记入flag[0],一行数据处理完毕后,后移一位至flag[1],同理,flag[1]里的数据也要后移,这样一圈下来,除了第N棵树外,其他的均能得到正确处理。由于检验第N棵果树的E的情况,实际用到3组果树组合{(N-2)(N-1)(N)}、{(N-1)(N)(1)},{(N)(1)(2)}的落果情况,故把它提出来单独处理。

三、代码 #include int main() { int N,m,T=0,D=0,E=0; scanf("%d",&N); int i,j,T0,Ti,Di=0; int flag[3]={0},f1=0,f2=0,flagsum; for(i=0;i scanf("%d",&Ti); //判断进行疏果操作还是统计操作 if(Ti>0) //统计果数 { if(T0>Ti)//发生掉果了 { T0=Ti; Di=Di+1; } } else//进行疏果 { T0=T0+Ti; } } T=T+T0; if(Di!=0)//算D { D=D+1;//确定该果树是否有掉落 flag[0]=1; switch(i) { case 0:flag[0]=1;f1=1;break; case 1:flag[0]=1;f2=1;break; } } else { flag[0]=0; } if(i!=N-1)//算E { flagsum=flag[0]+flag[1]+flag[2]; if(flagsum==3) E++; } else { flagsum=flag[0]+flag[1]+flag[2]; if(flagsum==3) E++; flagsum=flag[0]+flag[1]+f1; if(flagsum==3) E++; flagsum=flag[0]+f1+f2; if(flagsum==3) E++; } Di=0;//每一行数据计算完毕后记得清零Di flag[2]=flag[1]; flag[1]=flag[0]; } printf("%d %d %d",T,D,E); return 0; } 四、相关链接

上一道题代码:https://blog.csdn.net/z_2_0_/article/details/103973794



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3