1 solutions
-
0
C :
#include<stdio.h> int N,x,y,Sum=1,k; int main(){ scanf("%d%d",&N,&x); for(int i=2;i<=N;i++){ scanf("%d",&y); if(y>x){//升序k=1 if(k==2||k==0){ k=1; Sum++; x=y; } if(k==1)x=y;//取大 } if(y<x){//降序k=2 if(k==1||k==0){ k=2; Sum++; x=y; } if(k==2)x=y;//取小 } } printf("%d",Sum); }
C++ :
#include <cstdio> #include <algorithm> #include <cstring> using namespace std; int N=0; int nDate_A[1000001]={0},nDate_B[1000001]={0}; int nFlower[1000001]={0}; int nLen_A=1,nLen_B=1,maxx=0; int main(){ scanf("%d",&N); for(int i=1;i<=N;++i){ scanf("%d",&nFlower[i]); } nDate_A[nLen_A]=nFlower[1]; nDate_B[nLen_B]=nFlower[1]; for(int i=2;i<=N;++i){//第A种 if(nLen_A%2==1){ if(nFlower[i]>nDate_A[nLen_A]) nDate_A[++nLen_A]=nFlower[i]; else nDate_A[nLen_A]=nFlower[i]; } else{ if(nFlower[i]<nDate_A[nLen_A]) nDate_A[++nLen_A]=nFlower[i]; else nDate_A[nLen_A]=nFlower[i]; } if(nLen_B%2==1){ if(nFlower[i]<nDate_B[nLen_B]) nDate_B[++nLen_B]=nFlower[i]; else nDate_B[nLen_B]=nFlower[i]; } else{ if(nFlower[i]>nDate_B[nLen_B]) nDate_B[++nLen_B]=nFlower[i]; else nDate_B[nLen_B]=nFlower[i]; } } printf("%d",max(nLen_B,nLen_A)); fclose(stdin); fclose(stdout); return 0; }
Pascal :
var n,i,j,k:longint; a,b:array[1..100000] of longint; begin k:=0; read(n); for i:=1 to n do read(a[i]); b[1]:=a[1]; j:=1; for i:=2 to n do if a[i]<>b[j] then begin b[j+1]:=a[i]; j:=j+1; end; for i:=2 to j-1 do if ((b[i]>b[i-1]) and (b[i]>b[i+1])) or ((b[i]<b[i-1]) and (b[i]<b[i+1])) then k:=k+1; write(k+2); end.
- 1
Information
- ID
- 769
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- (None)
- Tags
- # Submissions
- 0
- Accepted
- 0
- Uploaded By