UVA 413|LA 5388|POJ 1492|ZOJ 1338 Up and Down Sequences
生活随笔
收集整理的這篇文章主要介紹了
UVA 413|LA 5388|POJ 1492|ZOJ 1338 Up and Down Sequences
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
https://zoj.pintia.cn/problem-sets/91827364500/problems/91827364837
題意:如果是上升序列,上升序列的長度不是所有上升數字的,是這么規定的,如果它與前一個數字構成上升,那么這個數字算上長度。
所以說,比如1 2 3 4 5 ,這個長度為4。(這里感覺蠻奇怪的,理解了這里就基本ok了),舉個例子:
1 2 3 2 3 4 5,上升序列有1 2 3 , 2 3 4 5 ,長度為2 + 3 = 5,個數為2,所以輸出5.0/2.0 = 2.5
如果有重復數字,比如4 4 4 3 3 3 3 ,那么這整個是下降序列;
再如4 4 4 3 3 3 4 ,則前6個是下降,后倆是上升
題解:模擬
C++版本一
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<iostream> using namespace std; int main() {int a[102],x,i,j,u,d,t,fu,fd,nu,nd;while(scanf("%d",&x),x){a[0]=x;j=1;while(scanf("%d",&x),x)a[j++]=x;u=d=nu=nd=t=0;fu=fd=0;for(i=0;i<j-1;i++){if(a[i]==a[i+1]){if(!fu&&!fd)t++;if(fu)u++;if(fd)d++;}if(a[i]<a[i+1]){fd=0;if(!fu){fu=1;nu++;}u++;u+=t;t=0;}if(a[i]>a[i+1]){fu=0;if(!fd){fd=1;nd++;}d++;d+=t;t=0;}}double m,n;if(nu==0)n=0.0;elsen=(double)u/nu;if(nd==0)m=0.0;elsem=(double)d/nd;printf("Nr values = %d: %.6lf %.6lf\n",j,n,m);}return 0; }JAVA版本一
import java.io.*; import java.util.*;class Main{public static void main(String[] args) {Scanner cin = new Scanner (System.in);int a[]=new int[102];int x,i,j,u,d,t,fu,fd,nu,nd;while(cin.hasNextInt()){x=cin.nextInt();if(x==0)break;a[0]=x;j=1;while(cin.hasNextInt()) {x=cin.nextInt();if(x==0)break;a[j++]=x;}u=d=nu=nd=t=0;fu=fd=0;for(i=0;i<j-1;i++){if(a[i]==a[i+1]){if(fu==0&&fd==0)t++;if(fu!=0)u++;if(fd!=0)d++;}if(a[i]<a[i+1]){fd=0;if(fu==0){fu=1;nu++;}u++;u+=t;t=0;}if(a[i]>a[i+1]) {fu=0;if(fd==0){fd=1;nd++;}d++;d+=t;t=0;}}double m,n;if(nu==0)n=0.0;elsen=(double)u/nu;if(nd==0)m=0.0;elsem=(double)d/nd;System.out.printf("Nr values = %d: %.6f %.6f\n",j,n,m);}} }?
總結
以上是生活随笔為你收集整理的UVA 413|LA 5388|POJ 1492|ZOJ 1338 Up and Down Sequences的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ZOJ 1292 Integer Inq
- 下一篇: 《Java程序设计》实验报告——Java