蛮力法
作者:互联网
C++算法设计中的蛮力法,虽然时间效率比较低,但有些问题还必须使用蛮力法来解决。当问题规模较小时,蛮力法设计简单,不失为一个好方法。下面列举几个用蛮力法解决的问题,帮助大家理解蛮力法的设计思想。
**查找问题 **
int Find(int a[],int n,int k){
int i=n;
a[0]=k;
while(a[i]!=k)
i--;
return i;
}
测试:
clock_t start,finish;
double totaltime;
start=clock();
int a[]={0,1,2,3,4,5,6,7,8,9};
cout<<Find(a,10,6);
finish=clock();
totaltime=(double)(finish-start)/CLOCKS_PER_SEC;
cout<<"\n此程序的运行时间为"<<totaltime<<"秒!"<<endl;
生成子集问题
void CreateSet(int n){
int i,s=1;
for(i=0;i<n;i++){
s*=2;
}
for(i=0;i<s;i++){
cout<<i<<" ";
printf("%o",i);//8进制 %x 16进制
cout<<endl;
}
}
测试;
CreateSet(5);
凸包问题
void ConvexHull(int x[],int y[],int n){
int i,j,k,sign1,sign2;
int A,B,C;
for(i=0;i<n-1;i++){
for(j=i+1;j<n;j++){
sign1=0;sign2=0;
A=y[i]-y[j];
B=x[j]-x[i];
C=x[i]*y[j]-x[j]*y[i];
for(k=0;k<n;k++){
if(k!=i&&k!=j){
if(A*x[k]+B*y[k]+C>0)
sign1=1;
else
sign2=1;
if(sign1==sign2) break;
}
}
if(k==n){
cout<<"("<<i<<","<<j<<")"<<endl;
}
}
}
}
测试:
int x[]={0,1,2,2,3};
int y[]={0,2,1,6,0};
ConvexHull(x,y,5);
标签:cout,clock,int,蛮力,sign1,sign2 来源: https://blog.csdn.net/chengxuyuanliwanwan/article/details/95368275