文章
166
粉丝
0
获赞
0
访问
10.1k
(1)算法基本思想把s1,s2,s3分别存放到三个数组a,b,c中 ,设置一个初值min =int_max 循环执行下面步骤
1.计算a(i) ,b(j),c(k)的距离d
2.如果d< min 则 min=d
3.把a(i),b(j),c(k)中数值最小的下标++
最后输出min
(2)
#define int_max 0x7fffffff
int abs_(int a)//计算绝对值
{
if(a<0) return -a;
else return a;
}
bool xls_min(int a,int b,int c){//判断a是否是三个数中最小的
if(a<=b && a<=c) return true;
return false;
}
int findminftrip(int a[],int b[],int c[],int n,int m,int p){
int i=0,j=0,k=0 , d_min = int_max,d;
while(i<n&&j<m&&k<p&&d_min>0){
d = abs_(a[i]-b[j])+abs_(b[j]-c[k])+abs_(c[k]-a[i]);
if(d<d_min) d_min = d;
if(xls_min(a[i],b[j],c[k])) i++;
else if(xls_min(b[j],a[i],c[k])) j++;
else k++;
}
return d_min;
}
(3)时间复杂度o(n) 空间复杂度o(1)
评分及理由
(1)得分及理由(满分3分)
得分:3分
理由:学生的算法基本思想与标准答案中的方法二一致,即使用三个指针分别指向三个数组的首个元素,每次移动指向元素最小的指针,并计算距离。思路清晰且正确。
(2)得分及理由(满分8分)
得分:7分
理由:学生的代码实现与标准答案基本一致,但存在以下问题:
abs_
函数,虽然功能正确,但标准库中已有abs
函数,建议直接使用标准库函...
登录后发布评论
暂无评论,来抢沙发