【每日一题42】3227. 折点计数

Day42 AcWing 3227. 折点计数

思路

  1. 模拟

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include<bits/stdc++.h>
using namespace std;

int n;
int a[1010];

int main()
{
cin>>n;
if(n<3)
{
puts("0");
return 0;
}
for(int i=0;i<n;i++)
{
cin>>a[i];
}
int b,c=0;
b=a[0];
int cnt=0;
for(int i=1;i<n-1;i++)
{
c=a[i+1];
if(a[i]>b&&a[i]>c) cnt++;
if(a[i]<b&&a[i]<c) cnt++;
b=a[i];
}
cout<<cnt<<endl;
return 0;
}

yxc

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>

using namespace std;

const int N = 1010;

int n;
int q[N];

int main()
{
cin >> n;
for (int i = 0; i < n; i ++ ) cin >> q[i];

int res = 0;
for (int i = 1; i < n - 1; i ++ )
{
int a = q[i - 1], b = q[i], c = q[i + 1];
if (b < a && b < c || b > a && b > c)
res ++ ;
}

cout << res << endl;
return 0;
}