zoukankan      html  css  js  c++  java
  • 一组区间中交集最多的一个

    #include <iostream>
    #include <stdlib.h>
    #include <time.h>
    using namespace std;
    #define NUM 30 //区间个数

    typedef struct
    {
    int min; //区间中最小值
    int max; //区间中最大值
    int diff; //区间的大小
    }extent;

    int Max(int a,int b)
    {
    if (a>=b)
    {
    return a;
    }
    else
    {
    return b;
    }

    }

    int Min(int a,int b)
    {
    if (a<=b)
    {
    return a;
    }
    else
    {
    return b;
    }
    }


    int main()
    {
    extent a[NUM]; //这么多组区间
    extent tep[(NUM*(NUM-1))/2]; //需要比较的区间,共num*(num-1)/2个
    extent result;
    int i,j;
    int m=-1;
    srand(time(0));
    for (i=0;i<NUM;i++) //初始化区间
    {
    a[i].min=rand()%10;
    a[i].max=rand()%10+10;
    cout<<a[i].min<<""<<a[i].max<<endl;
    }

    for (i=0;i<NUM-1;i++) //m个区间需要比较1+2+3+...+m-1这么多个
    {
    for (j=i+1;j<NUM;j++)
    {
    m++;
    tep[m].min=Max(a[i].min,a[j].min);
    tep[m].max=Min(a[i].max,a[j].max);
    tep[m].diff=tep[m].max-tep[m].min;
    }
    }

    int Mdiff=-1;
    for (i=0;i<(NUM*(NUM-1))/2;i++) //找出比较后最大的区间
    {
    if (tep[i].diff>Mdiff)
    {
    Mdiff=tep[i].diff;
    result.max=tep[i].max;
    result.min=tep[i].min;
    result.diff=tep[i].diff;
    }
    }

    cout<<endl;
    cout<<result.min<<""<<result.max<<endl;
    cout<<result.diff<<endl;

    system("pause");
    return 0;
    }
  • 相关阅读:
    Object类学习
    Thread.State 线程状态
    Thread.UncaughtExceptionHandler
    apply和call的区别
    如何实现border-width:0.5px;
    table固定头部,表格tbody可上下左右滑动
    canvas画布实现手写签名效果
    ES6学习笔记
    for循环中执行setTimeout问题
    javaScript函数提升及作用域
  • 原文地址:https://www.cnblogs.com/tiandsp/p/2337146.html
Copyright © 2011-2022 走看看