首页 > 试题广场 >

区间表达

[编程题]区间表达
  • 热度指数:188 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
牛牛的老师给出了一个区间的定义:对于x ≤ y,[x, y]表示x到y之间(包括x和y)的所有连续整数集合。例如[3,3] = {3}, [4,7] = {4,5,6,7}.牛牛现在有一个长度为n的递增序列,牛牛想知道需要多少个区间并起来等于这个序列。
例如:
{1,2,3,4,5,6,7,8,9,10}最少只需要[1,10]这一个区间
{1,3,5,6,7}最少只需要[1,1],[3,3],[5,7]这三个区间

输入描述:
输入包括两行,第一行一个整数n(1 ≤ n ≤ 50),
第二行n个整数a[i](1 ≤ a[i] ≤ 50),表示牛牛的序列,保证序列是递增的。


输出描述:
输出一个整数,表示最少区间个数。
示例1

输入

5
1 3 5 6 7

输出

3
import java.util.Scanner;
public class Main{
public static void main(String [] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] arr = new int[n];
for(int i = 0;i<n;i++)
arr[i] =sc.nextInt();
int ans =1;
for(int i =1;i<n;i++){
if(arr[i]!=(arr[i-1]+1))
ans ++;
}
if(n==0)
ans=0;
System.out.println(ans);
}
}

编辑于 2018-07-10 20:24:03 回复(0)
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
 
intmain()
{
    intn;
    inta[50] = {0};
    inti = 0;
    intcount = 0;
    scanf("%d", &n);
    getchar();
    for(;i <n;i++)
    {
        scanf("%d", &a[i]);
    }
    getchar();
    for(i = 0;i < n-1;i++)
    {
        if(a[i]+1 != a[i+1])
        {
            ++count;
        }
    }
    ++count;
    printf("%d\n", count);
    return0;
}

发表于 2018-09-14 20:57:07 回复(0)