POJ No.3061-Subsequence(连续子序列)
来源:互联网 发布:淘宝上最帅的男模特 编辑:程序博客网 时间:2024/06/01 21:56
尺取法
(尺取法通常是指对数组保存一对下标(起点、终点),然后根据实际情况交替推进两个端点直到得出答案的方法)
给定长度为n的数列正数a0,a1,……,a(n-1)以及整数S。
求出总和不小于S的连续子序列的长度的最小值。如果解不存在,则输出0。
输入
n = 10
S = 15
a = {5,1,3,5,10,7,4,9,2,8}
输出
2
算法设计:
1、以s=t=sum = 0初始化
2、只要有sum<S,就不断将sum增加a(t),并将t+1
3、若2中无法满足sum>=s则终止,否则,使res=min(res.t-s)
使sum=sum-a(s),s增加1,然后回到步骤2
这个算法的t最多变化n次,因此只需要O(n)的复杂度就可以求解这个问题。
反复地推进区间的开头和末尾、来求去满足条件的最小区间的方法称为尺取法。
import java.util.Scanner;public class 尺取法 {public static void main(String[] args) {// TODO Auto-generated method stubScanner cin = new Scanner(System.in);System.out.print("n=");int n = cin.nextInt();System.out.print("S=");int S = cin.nextInt();int[] a = new int[n]; System.out.print("a=");for(int i=0;i<n;i++)a[i]= cin.nextInt();//solveint res = n+1;int s = 0,t=0,sum=0;for(;;){while (t<n&&sum<S)sum+=a[t++];if (sum<S) break;res = min(res,t-s);sum-= a[s++];}if(res>n)res=0;System.out.println(res);}static int min(int a,int b){if(a>=b) return b;else return a;}}
0 0
- POJ No.3061-Subsequence(连续子序列)
- POJ 3061 Subsequence (迟取法_预处理,连续子序列)
- poj 3061(连续子序列问题)
- Common Subsequence - POJ 1458 最长非连续公共子序列
- (不连续)最大公共子序列POJ 1458Common Subsequence
- POJ 3061 · Subsequence【子序列】【二分】
- POJ 3061 · Subsequence【子序列】【尺取法】
- poj 2533 Longest Ordered Subsequence (最长子序列)
- poj 2533 Longest Ordered Subsequence(最长上升子序列)
- poj 2533 Longest Ordered Subsequence(最长递增子序列)
- POJ 1458 Common Subsequence(最长公共子序列问题)
- POJ 2533 Longest Ordered Subsequence(最长上升子序列)
- POJ 2533 Longest Ordered Subsequence(最长上升子序列)
- POJ 1458 Common Subsequence(最长公共子序列)
- POJ 2533 Longest Ordered Subsequence(最长递增子序列)
- POJ 2533 Longest Ordered Subsequence(最大上升子序列)
- poj-2533 Longest Ordered Subsequence(最长递增子序列)
- POJ 2533Longest Ordered Subsequence(最长上升子序列)
- iOS与h5交互
- Redis入门概述和安装
- MySql性能测试
- Centos6 下的 nginx 安装
- (十九)jmeter3.0插件管理---学习笔记
- POJ No.3061-Subsequence(连续子序列)
- Maven+ssm(spring、springmvc、mybatis)开发Web应用
- 在编写代码时,如何设置eclipse的自动提示功能
- 多个版本jdk,修改环境变量不生效
- CocoaPods 删除已导入项目的第三方库和移除项目中的CocoaPods
- java自增自减
- leveldb接口概览
- Linux执行.sh文件时提示No such file or directory
- vs2012 iis express Web配置