当前位置:
首页 >
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的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: ZOJ 1292 Integer Inq
- 下一篇: 解析ASP网页的执行顺序