在这种情况下,如何找到最大的子列表?
给定一组n像素RGB值的数据
例如n = 3
像素[1]:255、255、255像素[2]:0、20、0像素[3]:5、13、63
查找满足以下条件的最大子列表(像素数):A×(R-rmin)+ B×(G-gmin)+ C×(B-bmin)≤D,其中A,B,C和D为常数取自用户输入。 rmin,gmin,bmin分别是子列表中像素的最小RGB值。
例如使用上面的示例数据集,子列表大小= 2,包含pixel [2]和pixel [3],rmin = 0,gmin = 13,bmin = 0
我要做的是设置一个数组以接收像素数据,并将其放入一个双嵌套的for循环中,第一个用于计数不同的可能起始像素,第二个用于添加一个额外的像素,看看该额外像素是否满足条件。如果不满足,循环将结束,像素数将存储在与起始像素相对应的数组中。
但是,这显然是错误的,因为该算法没有考虑所有不同的组合。该方法假定像素以数字顺序增加,在这种情况下,由于每个像素具有3个对应值,因此无法按数字顺序排序。我也无法对它们进行排序A×(R-rmin)+ B×(G-gmin)+ C×(B-bmin),因为最小值随每个子集而变化。
谢谢您的帮助 :)
最佳答案
我宁愿通过指针遍历字符串,如果指针以某个单词开头(尝试strncmp
和strlen
),我会将整个字符串向左移动,例如“ ALPHA BETA”->“ ABETA”使用memmove
。
另请注意,如果您调用return
语句,该函数将立即返回。如果要停止循环,请使用break
语句。如果要跳过单个迭代,请使用continue
语句。