题目:![](https://img-blog.csdnimg.cn/direct/ec7c8dc6b8b64e9ab200c06d68148895.png)
分析:难度与前两年相似,能直接暴力思路展现题干,但是想要降低时间复杂度需要发现题目具有的重要性质。换句话就是说难度梯度跨度比较大。
思路一:三重循环
思考:直接暴力展现题干
#include <iostream>
using namespace std;
const int N=1e5;
int S1[N],S2[N],S3[N],S[3];
int n1,n2,n3;
int cal_D(int a,int b,int c)
{
return abs(a-b)+abs(b-c)+abs(c-a);
}
int get_min(int S1[],int S2[],int S3[],int n1,int n2,int n3)
{
int tmp=cal_D(S1[0],S2[0],S3[0]);
for(int i=0;i<n1;i++)
for(int j=0;j<n2;j++)
for(int k=0;k<n3;k++)
{
if(cal_D(S1[i],S2[j],S3[k])<=tmp)
tmp=cal_D(S1[i],S2[j],S3[k]);
}
return tmp;
}
int main()
{
cin>>n1;
for(int i=0;i<n1;i++) cin>>S1[i];
cin>>n2;
for(int i=0;i<n2;i++) cin>>S2[i];
cin>>n3;
for(int i=0;i<n3;i++) cin>>S3[i];
cout<<get_min(S1,S2,S3,n1,n2,n3);
return 0;
}
时间复杂度:O(n1*n2*n3),空间复杂度:O(1)
思路二:优化
思考:目前优化的思路还没看懂,考场上可能最快反应的还是三重暴力扣个四到五分。王道讲解听的迷迷糊糊的。