拍卖网站开发,亿联时代网站建设,上海柘中建设股份有限公司网站,沈阳网站制作聚艺科技以下是 Python 代码的 C 实现#xff0c;主要逻辑包括计算数组相对于目标数组的距离#xff0c;并根据该距离排序#xff1a;
#include iostream
#include vector
#include set
#include algorithm// 计算一个数组 arr 相对于目标数组 obj…以下是 Python 代码的 C 实现主要逻辑包括计算数组相对于目标数组的距离并根据该距离排序#includeiostream#includevector#includeset#includealgorithm// 计算一个数组 arr 相对于目标数组 obj 的距离intcalculateDistance(conststd::vectorintarr,conststd::vectorintobj){std::setintobjSet(obj.begin(),obj.end());// 使用集合进行快速成员检测intmaxGap0;std::vectorintindices;for(intnum:objSet){for(size_t i0;iarr.size();i){if(arr[i]num){indices.push_back(i);}}if(indices.size()2){std::sort(indices.begin(),indices.end());intgapindices.back()-indices.front();// 最后一次出现与第一次出现的索引差if(gapmaxGap){maxGapgap;}}// 如果数字只出现一次或未出现gap 为 0不影响 maxGap}returnmaxGap;}// 将 vector 中的每个元素按照其与 obj 的距离从小到大排序std::vectorstd::vectorintsortVectorByDistance(conststd::vectorstd::vectorintvec,conststd::vectorintobj){std::vectorstd::vectorintsortedVecvec;std::sort(sortedVec.begin(),sortedVec.end(),[obj](conststd::vectorinta,conststd::vectorintb){returncalculateDistance(a,obj)calculateDistance(b,obj);});returnsortedVec;}intmain(){// 示例数据std::vectorstd::vectorintmyVector{{1,3,5,3,1,2,5},// 数字3的间隔: 索引1到3 - 2; 数字5的间隔: 索引2到6 - 4{2,4,6,8},// 没有数字在 obj 中距离为 0{5,1,5,1,5},// 数字5的间隔: 索引0到4 - 4{1,1}// 没有数字在 obj 中距离为 0};std::vectorintmyObj{3,5};// 目标数组我们关注数字3和5std::cout原始 vector: std::endl;for(size_t i0;imyVector.size();i){intdistcalculateDistance(myVector[i],myObj);std::cout 元素 i: ;for(intval:myVector[i]){std::coutval ;}std::cout, 距离: diststd::endl;}std::vectorstd::vectorintresultsortVectorByDistance(myVector,myObj);std::cout\n排序后的 vector: std::endl;for(size_t i0;iresult.size();i){intdistcalculateDistance(result[i],myObj);std::cout 元素 i: ;for(intval:result[i]){std::coutval ;}std::cout, 距离: diststd::endl;}return0;}说明calculateDistance 函数· 将目标数组转换为 std::set 以方便查询。· 对每个目标数字在数组中查找所有出现的位置并记录索引。· 如果出现次数 ≥ 2计算最大间隔最后出现位置 - 第一次出现位置并更新最大间隔。sortVectorByDistance 函数· 使用 std::sort 和自定义比较函数Lambda 表达式根据每个数组与目标数组的距离进行排序。主函数· 定义示例数据 myVector 和 myObj。· 输出原始数组及其距离然后输出排序后的结果。运行示例输出原始 vector: 元素 0: 1 3 5 3 1 2 5 , 距离: 4 元素 1: 2 4 6 8 , 距离: 0 元素 2: 5 1 5 1 5 , 距离: 4 元素 3: 1 1 , 距离: 0 排序后的 vector: 元素 0: 2 4 6 8 , 距离: 0 元素 1: 1 1 , 距离: 0 元素 2: 1 3 5 3 1 2 5 , 距离: 4 元素 3: 5 1 5 1 5 , 距离: 4这样就用 C 完整实现了原 Python 代码的功能。