欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

UVA 413|LA 5388|POJ 1492|ZOJ 1338 Up and Down Sequences

发布时间:2024/10/5 43 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。