目錄
題目描述:
樣例描述:
代碼:
#include <iostream>
#include <vector>
#include <cstring>
using namespace std;
int main() {
int N;
int T=0,D=0,E=0;
int repeat;
int a[1005];
memset(a,0,sizeof(a));
scanf("%d",&N);
for(int i=0;i<N;i++)
{
int temp=0;
int dropNum;//一棵樹上蔬果的數目
int treeNum;//一棵樹上原有的數目
scanf("%d",&repeat);
scanf("%d",&treeNum);
for(int j=1;j<repeat;j++)
{
scanf("%d",&dropNum);
if(dropNum>0)//如果沒蔬果
{
if(treeNum>dropNum)//發現掉落了
{
temp=1;
treeNum=dropNum;
}
}
else
{
treeNum+=dropNum; //如果是蔬果
}
}
if(temp==1)//掉果了,就D增加一
{
D++;
a[i]=1;
}
T+=treeNum;
}
for(int i=2;i<N;i++)//判斷是不是連着的三個
{
if(a[i-1]==1&&a[i-2]==1&&a[i]==1)
E++;
}
if(a[0]==1&&a[1]==1&&a[N-1]==1)
E++;
if(a[0]==1&&a[N-2]==1&&a[N-1]==1)
E++;
printf("%d %d %d",T,D,E);
return 0;
}
出現問題及解決辦法:
1、一棵樹可能重新統計多次,故會有多次掉落。所以,一顆樹掉落果子了 只需要統計一次,這裏我用了temp做跳板。
2、判斷連續3個樹的時候,我自以爲3個樹只需要記錄一次E就可以了,然而這樣是錯的。。需要記錄3次。
舉例:樹1,2,3 E的次數爲(1,2,3),(2,3,1),(3,2,1) 共3次。啊我個傻狗!!!!