무차별 최근의 문제를 해결하는 방법 (영상)

이름

(1) 실험 목적
본 실험의 문제를 해결하기 위해 무단 동력 방법 마스터 알고리즘 효율성 분석 방법은 무력 개념의 사용은, 문제를 해결하는 실질적인 문제를 해결한다.
2, 실험 내용
볼록 선체 문제, 최근 문제의 기본적인 아이디어를 해결 브 루트 포스 방법을 사용. 출력을 인쇄합니다.
3, 실험 조건은
(1) 객체 지향 프로그래밍 언어를 수행하는 단계;
결과 (2) 가시화;
(3) 20보다 작지 입력 스케일.

알고리즘 개요

포인트 클래스의 객체 클래스의 인스턴스에 수신 된 사용자의 키보드 입력 (X, Y)와, 생성 한 오브젝트 수용 배열 개체
(주 새롭고 삭제 방법 해당), 그리고 (a 결과 배열 결과를 초기화 가장 초기의 충분히 큰 수에서) 전역 위치 선정
거리 (이 거리는도 판정을 할당하는의 일관성을 보장하는 동시에, 다음을 보장하기 위해 업데이트된다), 포인트 X, Y에 값이 1 (TRUE 점을 얻어 존재하지 않는
, 방법 건강 경고), (a 점없는이 물체의 배열 위치를 나타낸다) 일관성을 X 및 Y1 할당 함수를 만드는 기본 오브젝트에 대응
하는 경우 (X1-X2에게) ^ 2 + (Y1-Y2를 의) 값 ^ 2 [2]의 결과보다 작은 결과의 세 값을 갱신, 최종적으로 얻어진 결과를 업데이트;위한
시각화 위치 널링 (1)에 대응하는 탐색지도 (맵)의 업데이트 여기에서 점을 나타내고, 상기 가장 가까운 시점의 마지막지도
인쇄지도 다른 인쇄 패턴의 위치지도 시각화 캔에 대응하는 값에 따라 때 대응 위치 장치 (2)는, 그것이, 구분할

최적화에 대한 순회 방법 (한 번 손을 라인에 모든 점을 흔들었다)

C ++ 코드를 달성하기 위해

#include <iostream>
#include<math.h>

using namespace std;

class Point
{
public:
    Point() { x = -1; y = -1; show_or_not = false; }
    Point(int xx, int yy) { x = xx; y = yy; show_or_not = true; }
    bool show()
    {
        return show_or_not;
    }
    int show_x()
    {
        return x;
    }
    int show_y()
    {
        return y;
    }
private:
    int x;
    int y;
    bool show_or_not;
};
int map[10][10] = { 0 }; //可视化地图
int result[3]; //结果点集对象的下标和最小距离的平方作为结果  
int main()
{
    int a, b;
    int i = 0;
    Point *p = new Point[100];
    cout << "请输入点对(小于10的非负整数,两个一行,回车输入下一个,输入-1 -1结束输入)" << endl;
    cin >> a >> b;
    while (!(a == -1 && b == -1))
    {
        p[i] = Point(a, b);
        i++;
        cin >> a >> b;
    }
    i = 0;
    while (p[i].show())
    {
        map[p[i].show_x()][p[i].show_y()] = 1;
        i++;
    }
    int min_dis = 50000; //定义一个足够大的数初始化最小值
    for (int j = 0; j < i; j++) //找出最近对
    {
        for (int t = j + 1; t < i; t++)
        {
            int xx = (p[j].show_x() - p[t].show_x());
            int yy = (p[j].show_y() - p[t].show_y());
            if ((xx*xx + yy * yy) < min_dis)
            {
                min_dis = xx * xx + yy * yy;
                result[0] = j;
                result[1] = t;
                result[2] = min_dis;
            }
        }
    }
    cout << "最近点对是:" << "[" << p[result[0]].show_x() << "," << p[result[0]].show_y() << "]";
    cout << "[" << p[result[1]].show_x() << "," << p[result[1]].show_y() << "]" << endl;
    cout << "最近距离是:" << pow((result[2]), 0.5) << endl;

    //画地图
    map[p[result[0]].show_x()][p[result[0]].show_y()] = 2;
    map[p[result[1]].show_x()][p[result[1]].show_y()] = 2;
    cout << endl;
    for (i = 0; i < 10; i++)
    {
        for (int j = 0; j < 10; j++)
        {
            if (map[i][j] == 0)
                printf("一");
            else if (map[i][j] == 1)
                printf("点");
            else
                printf("对");
        }
        cout << endl;
    }
    delete []p; //清除堆区对象数组
    return 0;
}

실행 렌더링

추천

출처www.cnblogs.com/xikem/p/12201134.html