|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
×
题目描述
给定一个由n个整数组成的数字串num,并给出一个值S,现请你求出num中元素和大于等于S的最短子串的长度并输出,若没有则输出0。
输入描述
3行,第1行包含1个数字n,代表数字的个数n。
第2行包含n个数字,代表数字串中的每一个数字。
第3行包含1个数字S,代表需要比较的值S
输出描述
1行,包含num中元素和大于等于S的最短子串的长度。
样例1
输入
10
1 2 4 6 3 4 1 2 3 5
9
输出
2
提示
5<=n<=100000,1<=S<=9999998,数字大小不超过100。
我的代码
- #include <iostream>
- using namespace std;
- int a[100005];
- int main()
- {
- int n,s;
- cin>>n;
- for(int i=0;i<n;++i)
- cin>>a[i];
- cin>>s;
- int minl=n,flag=0;
- for(int l=0;l<n;++l){
- for(int r=l;r<l+minl;++r){
- int sum=0;
- for(int i=l;i<=r;++i){
- sum+=a[i];
- }
- if(sum>=s) {
- minl=min(minl,r-l+1);
- flag=1;
- }
- }
- }
- if(!flag){
- minl=0;
- }
- cout<<minl;
- return 0;
- }
复制代码
超时问题,如何简化 |
|