蛮力枚举C语言,蛮力法解决最近对问题总结

部分需要注意的地方:

1 , double ClosestPoints(int psize,int **p,int & ind1,int & ind2);

用return只能返回一个值,因此这里函数的参数表中增加了引用类型的变量 &ind1,&ind2 , 这样传进子函数中的参数在子函数中变化的同时,主函数中也会改变

2 , 不知大小的二维数组的动态分配内存构建

C++

p = new int *[psize];

for(int i=0;i

{

p[i] = new int[3];

}

C语言

int **p;

p=(int **)calloc(sizeof(int *),psize);

for(int i=0;i

{

*(p+i)=(int *)calloc(sizeof(int ),psize);

}

3 , c++的头文件中定义了FLT_MAX这个常量表示float类型的最大值

(其中也记录了double类型的最值)

而int类型是记录在头文件中,

int a=INT_MAX;。

完整代码如下:

#include"iostream"

#include"cmath"

using namespace std;

double ClosestPoints(int psize,int **p,int & ind1,int & ind2);

/*但是用return只能返回一个值,因此这里函数的参数表中增加了引用类型的变量 &ind1,&ind2

这样传进子函数中的参数在子函数中变化的同时,主函数中也会改变*/

int main()

{

int n,mind;

double z;

int psize;//元素个数

cout<

cin>>psize;

int **p; /*在未知数组大小的时候可以用动态分配内存的方法定义数组(一维二维均可)

此处为用二级指针指向一个二维数组*/

p = new int *[psize];

for(int i=0;i

{

p[i] = new int[3];

} /*到此,二维数组的动态分配内存构建完成*/

for(int i=0;i

{

cout<

cin>>p[i][0]>>p[i][1];

} //输入坐标值

int ind1=0;

int ind2=0;

z=ClosestPoints(psize,p,ind1,ind2);

cout<

cout<

return 0;

}

double ClosestPoints(int psize,int **p,int &ind1,int &ind2)

{

double mind=FLT_MAX; /*c++的头文件中定义了FLT_MAX这个常量表示float类型的最大值

(其中也记录了double类型的最值,

而int类型是记录在头文件中)int a=INT_MAX*/

double dis =0;

for(int i=0;i<=psize-2;i++)

{

for(int j=i+1;j<=psize-1;j++)

{

dis=(p[j][0]-p[i][0])*(p[j][0]-p[i][0])+(p[j][1]-p[i][1])*(p[j][1]-p[i][1]);

if(dis

{

mind=dis;

ind1=i;

ind2=j;

}

}

}

return mind;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值