九度:题目1554:区间问题

题目1554:区间问题

时间限制:1 秒

内存限制:128 兆

特殊判题:

提交:996

解决:81

题目描述:

给定一个数组,判断数组内是否存在一个连续区间,使其和恰好等于给定整数k。

输入:

输入包含多组测试用例,每组测试用例由一个整数n(1<=n<=10000)开头,代表数组的大小。
接下去一行为n个整数,描述这个数组,整数绝对值不大于100。
最后一行为一个整数k(大小在int范围内)。

输出:

对于每组测试用例,若存在这个连续区间,输出其开始和结束的位置,s,e(s <= e)。
若存在多个符合条件的输出,则输出s较小的那个,若仍然存在多个,输出e较小的那个。
若不存在,直接输出"No"。

样例输入:
5
-1 2 3 -4 9
5
3
-1 2 -3
7
2
-1 1
0
样例输出:
2 3
No
1 2
最原始的方法, 超时:
#include<stdio.h>

int main()
{
    int n;
    int a[10010];
    int b[10010];
    int sumb;
    while(~scanf("%d",&n))
    {
        for(int i=0;i<n;i++)    
        scanf("%d",&a[i]);
        scanf("%d",&sumb);
        for(int i=0;i<n;i++)    
        {
            if(a[i]==sumb)
            {
                printf("%d %d
",i+1,i+1);
                goto endd;
            }
            for(int j=i+1;j<n;j++)    
            {
                a[i] += a[j];
                if(a[i]==sumb)
                {
                    printf("%d %d
",i+1,j+1);
                    goto endd;
                }
            }
        }
        printf("No
");
        endd:
            continue;

    }
    return 0;
}


每天早上叫醒你的不是闹钟,而是心中的梦~
原文地址:https://www.cnblogs.com/vintion/p/4116918.html