• 算法与数据结构实验题 4.8 干净的序列


    ★实验任务
    有一个长度为 n 的序列,第 i 个的数为 a[i]。我们定义如果它的一个连续的子串为“没有进行过干净的交易”,那么这个子串的最大值与最小值之差在[m,k]中。
    现在,你的任务是找到一条最长的“没有进行过干净的交易”的子串。
    ★数据输入
    第一行输入三个正整数 n m k (0<n<=10000),m(0 =< m =< k =< n)。
    接下去一行有 n 个正整数,第 i 个数表示 a[i]的值。
    ★数据输出
    输出一个数,表示这个子串的长度。

    //输入示例1
    5 0 0
    1 1 1 1 1
    //输出示例1
    5
    
    //输入示例2
    6 0 3
    3 1 2 3 4 5
    //输出示例2
    5
    

    通过二重循环判断,其中注意:当max-min<m时继续内重循环,因为之后可能会有更小或者更大的数始得max-min>=m。

    #include<stdio.h>
    int main()
    {
    	int n,m,k,i,j,a[10005],max,min,count,ans=0;
    	scanf("%d%d%d",&n,&m,&k);
    	for(i=0;i<n;i++)
    	{
    		scanf("%d",&a[i]);
    	}
    	for(i=0;i<n-1;i++)
    	{
    		max=a[i];min=a[i];
    		for(j=i+1;j<n;j++)
    		{
    			if(a[j]>max)max=a[j];
    			if(a[j]<min)min=a[j];
    			if(max-min>=m&&max-min<=k)count=j-i+1;
    			else if(max-min<m)continue;
    			else break;
    		}
    		if(count>ans)ans=count;
                    count=0;
    	}
    	printf("%d",ans);
    	return 0;
     } 
    
  • 相关阅读:
    前端vue使用js-xlsx导出excel的三种方法
    vue使用echarts绘制河南地图并实现个人轨迹
    VUE中使用Echarts绘制柱状图
    springboot项目配置拦截器
    springboot+mybatis的多数据源配置
    Java后端高频面试题汇总
    Java基础专题
    Java集合专题
    Java并发专题
    JVM专题javascript:;
  • 原文地址:https://www.cnblogs.com/ponynice/p/13770256.html
Copyright © 2020-2023  润新知