最近对问题解决方法汇总

最近对问题时C++算法设计中常见的问题,这里为大家总结一下小编的两种做法。
蛮力法和分治法

#include
#include
#include 
using namespace std;
int* BruteForce(double x[], double y[], int length);
int* DivideConquer(double x[], double y[], int length);
int main()
{
	char x_char[10000];
	char y_char[10000];
	int length;
	int method_id;
	cin.getline(x_char, 10000);
	cin.getline(y_char, 10000);
	cin >> length;
	cin >> method_id;

	double x[1000];
	double y[1000];

	char* tmpStrX = strtok(x_char, " ");
	for (int i = 0; i < length; i++)
	{
		x[i] = atof(tmpStrX);
		tmpStrX = strtok(NULL, " ");
	}

	char* tmpStrY = strtok(y_char, " ");
	for (int j = 0; j < length; j++)
	{
		y[j] = atof(tmpStrY);
		tmpStrY = strtok(NULL, " ");
	}

	int* r = NULL;
	switch (method_id)
	{
	case 1:
		r = BruteForce(x, y, length);
                if(r[0] <= r[1])
                {
                      cout<=low)&&(S[i].xx-S[mid].xx)>=d;i--)
	{
		P[index].xx=S[i].xx;
		P[index].yy=S[i].yy;
        P[index].id=S[i].id;		
	    index++;
	}
	for(i=mid+1;(i<=high)&&(S[i].xx-S[mid].xx)<=d;i++)
	{
		P[index].xx=S[i].xx;
		P[index].yy=S[i].yy;
        P[index].id=S[i].id;		
	    index++;
	}	
	for(i=0;i=P[j].yy)
			{
				tx=P[i].xx;   P[i].xx=P[j].xx;    P[j].xx=tx;
				ty=P[i].yy;   P[i].yy=P[j].yy;    P[j].yy=ty;
				tid=P[i].id;  P[i].id=P[j].id;    P[j].id=tid;
			}
		}
	}
	
    for(i=0;i=d)
			  break;
			else
			{
				d3=Distance(P[i],P[j]);
				if(d3<=d)
				{
					a[0]=P[i].id;
					a[1]=P[j].id;
				}
			}
		}
	}
	return a;
	
}
//蛮力法 
int* BruteForce(double x[], double y[], int length)
{
	
	int* a=new int[2];
	int i,j;
	double min_d,dist;
    point* S=new point[length];
	for(i=0;i=S[j].xx)
			{
				tx=S[i].xx;   S[i].xx=S[j].xx;    S[j].xx=tx;
				ty=S[i].yy;   S[i].yy=S[j].yy;    S[j].yy=ty;
				tid=S[i].id;  S[i].id=S[j].id;    S[j].id=tid;
			}
		}
	} 
	a=Closest(S,0,length-1);
	return a;
}

代码是调试成功的,可以直接运行,欢迎提出修改意见。

你可能感兴趣的:(分治法,减治法,最近对问题)