在c/c+=中可以用什么来代替循环以节约时间

来源:百度知道 编辑:UC知道 时间:2024/06/01 20:55:26
各位帮帮忙啊

我用了四个for循环,时间耗费太大
题目是:请你在集合中找到四个不同的整数a, b, c, d,使
得 a + b + c = d,输出最大的整数d。
集合范围控制在1000以内

真正写程序的时候,性能的瓶颈不在a+=3还是 a=a+3上边,当然a+=3 是个好习惯
性能瓶颈在那个算法的复杂度,O(n^2)写得再优化也不会有O(nlogn)快的,这写技巧知道就行,真的工作中要用到自然会用到,多了解点其他东西比纠结在这上边好

或是用simd

loop unrolling 循环展开。

最简单的情况,比如for (int i = 0; i < 4; i++) {x[i] = i;}这种固定次数的循环可以直接写成x[0] = 0; x[1] = 1; x[2] = 2; x[3] = 3;

goto 最简单,但最好不要这样做,效率会高,但用不好就会出问题。
递归 也可以,但不一定能代替所有的循环,而且效率要比循环低,能力有限

没有别的方法啊,这是个书上的问题么?