QY10. 区间表达
描述
牛牛的老师给出了一个区间的定义:对于x ≤ y,[x, y]表示x到y之间(包括x和y)的所有连续整数集合。例如[3,3] = {3}, [4,7] = {4,5,6,7}.牛牛现在有一个长度为n的递增序列,牛牛想知道需要多少个区间并起来等于这个序列。输入描述
输入包括两行,第一行一个整数n(1 ≤ n ≤ 50), 第二行n个整数a[i](1 ≤ a[i] ≤ 50),表示牛牛的序列,保证序列是递增的。输出描述
输出一个整数,表示最少区间个数。示例1
输入:
5 1 3 5 6 7
输出:
3
C 解法, 执行用时: 1ms, 内存消耗: 372KB, 提交时间: 2020-07-28
#include<stdio.h> int main() { int n,i,count_set=0; scanf("%d",&n); int a[n]; for(i = 0;i < n;i++) scanf("%d",&a[i]); for(i = 0;i < n-1;i++){ if(a[i] + 1 != a[i+1]) count_set++; } printf("%d",count_set + 1); return 0; }
C 解法, 执行用时: 1ms, 内存消耗: 376KB, 提交时间: 2020-08-08
int main(int argc, char **argv) { int num,i; int a[50]; int cnt = 0; scanf("%d", &num); for (i = 0; i < num; i++) { scanf("%d", a + i); } for (i = 0; i < num-1; i++) { if ((a[i] + 1) != a[i + 1]) { cnt++; } } cnt++; printf("%d",cnt); return 0; }
C 解法, 执行用时: 2ms, 内存消耗: 236KB, 提交时间: 2019-05-15
#include<stdio.h> int main() { int n,i,count_set=0; scanf("%d",&n); int a[n]; for(i = 0;i < n;i++) scanf("%d",&a[i]); for(i = 0;i < n-1;i++){ if(a[i] + 1 != a[i+1]) count_set++; } printf("%d",count_set + 1); return 0; }
C 解法, 执行用时: 2ms, 内存消耗: 300KB, 提交时间: 2019-08-25
#include <stdio.h> int main(){ int interval = 1, length; int *ptr; if (scanf("%d", &length) == 1){ ptr = (int *)malloc(length * sizeof(int)); for (int i = 0; i < length; i++){ scanf("%d", ptr+i); } for (int j = 1; j < length; j++){ if (ptr[j] - ptr[j-1] > 1){ interval += 1; } } printf("%d", interval); } return 0; }
C 解法, 执行用时: 2ms, 内存消耗: 312KB, 提交时间: 2021-09-15
#include <stdio.h> int main(){ int n = 0, sum = 0; int a[50] = {0}; scanf("%d",&n); for(int i=0;i<n;i++){ scanf("%d",&a[i]); } for(int i=0;i<n;i++){ if(a[i+1]!=a[i]+1){ sum++; } } printf("%d",sum); return 0; }