美文网首页PAT
找一对数

找一对数

作者: tingshuo123 | 来源:发表于2017-09-19 16:32 被阅读4次
/*
 * 找一对数
 *
 * 例题1:
 * 输入 n(n<100,000)个整数,找出其中的两个数,他们之和等于整数 m
 * (假定肯定有解)。题中所有的整数能用 int 表示。
 *
 * 解法:
 * 1) 将数组排序,复杂度是 O(n * log(n))。
 * 2) 查找时,设置两个变量 i 和 j,i=0, j=n-1; 如果 a[i]+a[j] > m
 *    j-1,小于则 i+1, 直至a[i]+a[j] = m,复杂度 O(n)。
 *
 **/
 
#include <stdio.h>
#define <stdlib.h>

int main(void)
{
    // 读入数据
    int m;
    scanf("%d", &m);
    int n;
    scanf("%d", &n);
    int *arr = (int *)malloc(sizeof(int) * n);
    for (int i=0; i<n; i++){
        scanf("%d", &arr[i]);
    }
    
    // 排序
    qsort(arr, n, sizeof(int), Compare);
    
    // 查找符合条件的两个数
    int i = 0, j = n-1;
    while (arr[i] + arr[j] != m){
        if (arr[i] + arr[j] > m){
            j--;
        } else {
            i++;
        }
    }
    
    printf("%d + %d = %d", arr[i], arr[j], m);
}

相关文章

  • 找一对数

  • 对数变换

    关于对数的一些小知识: 关于对数 对数坐标轴 这一篇是关于对数变换的在对数据进行处理,或者进行可视化的时候,经常要...

  • [数学]对数_简单的指数法则_day67

    什么是对数 求数字100000中0的个数,就称作求100000的对数,也称作取对数,计算对数。100000的对数是...

  • 快速排序

    思想 快速排序采用的思想是分治思想。快速排序是找出一个元素(理论上可以随便找一个)作为基准(pivot),然后对数...

  • 对数反思

    预设问题不足,注意学生对于定义的理解,尤其求对数的值如何书写,上课内容把握不到位,常见对数和自然对数强调一下,对于...

  • log - 对数

    log如果 a^n = b (a>0 && a≠1) , 那么n叫做以a为底b的对数 , 记作 n = log(a...

  • 对数器

    0,有一个你想要测试的方法a 1,实现一个绝对正确的但是复杂度不好的方法b 2,实现一个随机样本产生器 3,实现比...

  • 关于对数

    对数的定义 如果 , 及的次方等于 , 那么叫做以为底的对数 , 记作 , 其中,叫做对数的底数 , 叫做真数 ...

  • 对数器

    数组排序对数器 1.java有自己的数组复制方法和比较方法,要先导入java.util.Arrays包; 2.生成...

  • 宝宝今日课程

    【数学开发】找果树 引导幼儿学习分辨“1”和“许多”的区别 能正确说出什么是“1”和 什么是“许多” 培养幼儿对数...

网友评论

    本文标题:找一对数

    本文链接:https://www.haomeiwen.com/subject/lbxgsxtx.html