csp小明种苹果(续)问题
60分,我实在看不出原因,有没有大佬求教
#include<iostream>
using namespace std;
int main(){
int N,T=0,D=0,E;
cin>>N;
int Dtree[1001];//记录掉落树编号
//初始化
int tree0,trees,tempT=0,flag=0;
for(int j=0;j<N;j++){
cin>>tree0;
flag=0;
for(int i=1;i<=tree0;i++){
cin>>trees;
if(i==1)
{
tempT=trees;
continue;
}
if(trees>0&&tempT>trees){
tempT=trees;
if(flag==0)
{
Dtree[D++]=j;//(发生了重复记录的情况,只考虑到一次掉落)
flag=1;
}
}
else if(trees<0)
tempT+=trees;
}
T+=tempT;
}
//统计连续三颗掉落的组数
int temp,times=0,j;
if(D <3)
E=0;
else if(D==3){//当D为3时 ,注意值的集合是不可以重复的
if(N==3)
E=1;
else{
temp=Dtree[0];
int i=1;
for(;i<D;i++){
if(temp+1!=Dtree[i])
break;
temp=Dtree[i];
}
if(i==2)
E=1;
else E=0;
}
}
else{
for(int i=0;i<D;i++) {
cout<<Dtree[i]<<" ";
}
cout<<endl;
for(int i=0;i<D;i++) {
temp=Dtree[i];
j=(i+1)%(D); //注意不要改变i的值
while((temp+1)%(N)==Dtree[j]){//D和N之间
times++;
temp=Dtree[j];
if(times==2)
{
times=0;
E++;
break;
}
j++;
if(D <=j)
j=j%(D);
}
}
}
cout<<T<<" "<<D <<" "<<E<<endl;
return 0;
}