zoukankan      html  css  js  c++  java
  • CCF201409-1 相邻数对(100分)


    试题编号: 201409-1
    试题名称: 相邻数对
    时间限制: 1.0s
    内存限制: 256.0MB
    问题描述:
    问题描述
      给定n个不同的整数,问这些数中有多少对整数,它们的值正好相差1。
    输入格式
      输入的第一行包含一个整数n,表示给定整数的个数。
      第二行包含所给定的n个整数。
    输出格式
      输出一个整数,表示值正好相差1的数对的个数。
    样例输入
    6
    10 2 6 3 7 8
    样例输出
    3
    样例说明
      值正好相差1的数对包括(2, 3), (6, 7), (7, 8)。
    评测用例规模与约定
      1<=n<=1000,给定的整数为不超过10000的非负整数。

    问题链接:CCF201409试题

    问题描述:首先输入正整数n,接着输入n个正整数,对于这n个数,统计输出其中的相邻数对(差值为1的数对)。

    问题分析:看似是一个n个数与n个数进行比较(时间复杂度高)的问题,但是可以用一个标志数组来处理。因为,这n个数是正整数,最大值为10000。

    程序说明

    这里写了C语言和C++语言两个版本的程序。

    标志数组需要左右多2个元素,所以数组元素的个数为N+2。使用函数memset()对标志数组进行初始化是套路,一定要理解掌握并且熟练应用。使用布尔数组也是本程序的一个关键,可以节省空间,但是要付出时间的代价。


    提交后得100分的C语言程序如下:

    /* CCF201409-1 相邻数对 */
    
    #include <stdio.h>
    #include <string.h>
    
    #define N 10000
    int flag[N + 1];
    
    int main(void)
    {
        int n, v, sum=0;
    
        // 清除标志:flag[i]为true表示i已经出现过,flag[i]为false表示i尚未出现过
        memset(flag, 0, sizeof(flag));
    
        // 输入数据,进行判断,统计处理
        scanf("%d", &n);
        while(n--) {
            // 输入数据
            scanf("%d", &v);
            flag[v] = 1;
    
            // 进行判断和统计处理
            if(flag[v-1])
                sum++;
            if(flag[v+1])
                sum++;
        }
    
        // 输出结果
        printf("%d
    ", sum);
    
        return 0;
    }


    提交后得100分的C++语言程序如下:

    /* CCF201409-1 相邻数对 */
    
    #include <iostream>
    #include <cstring>
    
    const int N = 10000;
    
    bool flag[N+2];
    
    using namespace std;
    
    int main()
    {
        int n, v, sum=0;
    
        // 清除标志:flag[i]为true表示i已经出现过,flag[i]为false表示i尚未出现过
        memset(flag, false, sizeof(flag));
    
        // 输入数据,进行判断,统计处理
        cin >> n;
        for(int i=1; i<=n; i++) {
            // 输入数据
            cin >> v;
            flag[v] = true;
    
            // 进行判断和统计处理
            if(flag[v-1])
                sum++;
            if(flag[v+1])
                sum++;
        }
    
        // 输出结果
        cout << sum << endl;
    
        return 0;
    }



     
  • 相关阅读:
    directives vant之Field输入限制【v-input-float】
    【vue】 typeScript OSS图片压缩处理工具类
    vue单页面加载js方法
    H5网页打开App以及App内某个页面
    适配iphoneX万能方法!!!
    固定底部button按钮,兼容各种手机、微信等【flex布局】
    天行数据小程序demo
    iview Weapp index索引器 cityjs 增加每个城市的code值
    小程序上传图片至七牛云(支持多张上传、预览、删除图片)
    (转)异步与非阻塞之间的区别(看到的最清晰的说明)
  • 原文地址:https://www.cnblogs.com/tigerisland/p/7564222.html
Copyright © 2011-2022 走看看