B - Islands in the Data Stream
水题:
题意:给出12个数字,如果一个子序列的两个端点及以内的每一个元素都大于子序列端点两边前一个和后一个数字,那么这个子序列称之为岛,求出这个序列一共有多少个岛。
思路:
利用三个for循环,把每个子序列都遍历一遍,令i,j为两个端点,用k进行遍历;
代码:
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int w;
int a[12];
scanf("%d",&w);
for(int i=0; i<12; i++)
{
scanf("%d",&a[i]);
}
int sum=0;
for(int i=0; i<12; i++)
{
for(int j=i; j<12; j++)
{
int faul=1;
for(int k=i; k<=j; k++)
{
if(a[k]<=a[i-1]||a[k]<=a[j+1])
{
faul=0;
break;
}
}
if(faul==1)
{
sum++;
}
}
}
printf("%d %d\n",w,sum);
}
}
这个题当时不会,没想到端点的事;