赞
踩
给定一个长度为N(10<N<100000)的正整数序列。每个正整数都小于等于10000,给定一个正整数S(S<100000000)。编写一个程序找到一个最小长度的子序列,要求这个子序列的和大于等于S。如果解不存在,则输出0。
第一行两个整数N和S,第二行包括n个正整数表示数列A,两两之间用空格分隔。
一个符合题目要求的整数。
输入:
5 11
1 2 3 4 5
输出:
3
无
- #include<bits/stdc++.h>
- using namespace std;
- int n,a[300000],mi=300000,c;
- long long s;
- int main()
- {
- cin>>n>>s;
- for(int i=1;i<=n;i++)
- {
- cin>>a[i];
- }
- for(int x=1;x<n;x++)
- {
- int y;
- for(y=x;y<=n;y++)
- {
- c+=a[y];
- if(c>=s)break;
- if(y==n)goto t;
- }
- mi=min(y-x+1,mi);
- t: ;
- c=0;
- }
- if(mi==300000)mi=0;
- cout<<mi;
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。