如何在这种情况下找到最大的子列表?
给出一组具有n个像素RGB值的数据
例如n = 3
pixel [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),因为最小值随每个子集而变化。
感谢您的帮助:)
答案 0 :(得分:0)
我宁愿通过指针遍历字符串,如果指针以某个单词开头(尝试strncmp
和strlen
),我会将整个字符串向左移动,例如“ ALPHA BETA”->“ ABETA”,使用memmove
。
还请注意,如果您调用return
语句,该函数将立即返回。如果要停止循环,请使用break
语句。如果要跳过单个迭代,请使用continue
语句。