续 csp20190902小明种苹果(C++)

题目介绍
方案1
先把数据存储起来,然后分别计算剩余苹果数、掉落苹果数、连续三棵树发生掉落情况的组数 。
感觉相对于其他的答案来说,这个解决方案并不十分优秀,仅供参考吧 。
出现的最大的问题是,数据怎么存 。这些数据可能会超过二维数组的界限,因此我开辟了一个指针数组 , 指针指向一维int数组来存储 。这样就够用了 。
代码如下:
#include using namespace std;int main() {int N;cin>>N;int *a[1000];for(int i =0;i<1000;i++){a[i] = new int [1000];}int num[1001];for(int i = 0; i>num[i];for(int j = 0; j>a[i][j];}}int T=0;int D=0;int E=0;int valApp[1001];bool havFall[1001];// 计算剩余苹果数 。倒着算即可:从最后一个正数开始做减法 。for(int i = 0; i=0; j--) //error1:这里的j-- {if(a[i][j]>0){valApp[i]=a[i][j];//cout< 解决方案2
遗憾的是 时间还是很长 。
【续csp20190902小明种苹果(C++)】#includeusing namespace std;int main() {int N;int T=0,D=0;int E=0;cin>>N;int m;int sum;int apple[1000];int drop[1000]= {0};for(int i = 0; i>m;for(int j = 0; j>apple[j];}sum = apple[0];for(int j =1; j0) { //重新统计if(sum!=apple[j]) {drop[i]=1;sum=apple[j];//cout<}} else{sum+=apple[j];//cout<}}if(drop[i]==1)D++;T+=sum;// cout<<" i"< 结语
如果我不存储数据到数组中,直接用数据的话,时间会少很多,但是这里博主就懒得搞了 。。。有个思路算了吧 。