暑假图灵普及1A P8422 WA 10 求助

题目传送门

#include <bits/stdc++.h>

using namespace std;

int n, ans, g[105], a[105];

int main()
{
    scanf("%d", &n);
    ans = n;
    for(int i = 0; i < n; i++)
    {
        cin >> g[i];
        a[i] = 1;
    }
    for(int i = 0; i < n - 1; i++)
    {
        if(g[i] > g[i + 1])
        {
            a[i] = a[i + 1] + 1;
            ans++;
        }
        else if(g[i + 1] > g[i])
        {
            a[i + 1] = a[i] + 1;
            ans++;
        }
    }
    cout << ans;

    return 0;
}
1 个赞

从左往右与从右往左分开写

1 个赞

从右往左要用max

1 个赞

因为是两个不同的步骤,不能放到一个循环里

for(int i=1;i<n;i++)if(a[i+1]>a[i])b[i+1]=b[i]+1;
	for(int i=n;i>1;i--)if(a[i-1]>a[i])b[i-1]=max(b[i]+1,b[i-1]);
2 个赞

你回我干啥

1 个赞

:upside_down_face:

2 个赞

666