gpt4 book ai didi

c++ - 从矩阵 : optimise way 中查找最大值

转载 作者:行者123 更新时间:2023-11-30 20:51:35 26 4
gpt4 key购买 nike

我想找出这个大小为 25 的 5x5 矩阵/数组中的最大数字。我正在使用下面的技巧。但我想知道任何其他可以优化此逻辑的方法,也欢迎任何其他逻辑。标记 c 和 cpp 以获得更多关于此问题的报道。

//Dummy code :
#include <stdio.h>
inline int max_val(int x, int y)
{
return (x > y)? x : y;
}
int main(){
int src[25] = {19,26, 34, 48, 50 , 24, 95, 91, 54, 28,47, 45, 48, 68, 24 ,27, 10, 20, 28, 65 ,98, 96, 94, 92, 20};
/* just showed as example
19 26 34 48 50
24 95 91 54 28
47 45 48 68 24
27 10 20 28 65
98 96 94 92 20 */

int dst[25]={0} ;//purposefully not initialised as it is dummy code
int width = 5;
int* pImage0 = src;
int* pImage1 = pImage0 + width;
int* pImage2 = pImage1 + width;
int* pImage3 = pImage2 + width;
int* pImage4 = pImage3 + width;
int BoxMax0,BoxMax1,BoxMax2,BoxMax3,BoxMax4,BoxMax;
for(int loop =0; loop<25;loop++){
BoxMax0 = max_val((pImage0[0]),max_val((pImage0[1]),max_val((pImage0[2]),max_val(pImage0[3],pImage0[4]))));
BoxMax1 = max_val((pImage1[0]),max_val((pImage1[1]),max_val((pImage1[2]),max_val(pImage1[3],pImage1[4]))));
BoxMax2 = max_val((pImage2[0]),max_val((pImage2[1]),max_val((pImage2[2]),max_val(pImage2[3],pImage2[4]))));
BoxMax3 = max_val((pImage3[0]),max_val((pImage3[1]),max_val((pImage3[2]),max_val(pImage3[3],pImage3[4]))));
BoxMax4 = max_val((pImage4[0]),max_val((pImage4[1]),max_val((pImage4[2]),max_val(pImage4[3],pImage4[4]))));
BoxMax = max_val(BoxMax0,max_val(BoxMax1,max_val(BoxMax2,max_val(BoxMax3,BoxMax4)));
pImage0++;
pImage1++;
pImage2++;
pImage3++;
pImage4++;
dst[loop] = BoxMax;
}
return 0;
}

最佳答案

我不知道你的代码到底应该做什么(特别是当你访问 src 之外的内存位置时),但我几乎敢打赌

int max = *std::max_element(begin(src), end(src));

实际上比你的构造更快。

关于c++ - 从矩阵 : optimise way 中查找最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29266056/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com