C-二维数组中移动的顺序,以获取最大的总和

时间:2018-11-11 13:31:46

标签: c arrays sum 2d

我一直在遇到问题,像这样:

我有一个2D数组,其中每个位置都填充有一定数量的样本(以int表示)。有纳米机器人,每个机器人沿直线穿过一部分色谱柱线(每个色谱柱都有预先指定的方式),并沿途收集所有样品。如果纳米机器人在一个位置上收集样本,则该位置将被污染,如果另一个机器人到达该位置,则将变得混乱并停止。我可以按任何顺序部署机器人,并且每个机器人只有在上一个机器人停止后才能开始工作。

有了这些信息,我想找到收集最大数量样本的顺序。

对这个问题的任何帮助将不胜感激,因为我很沮丧。我对它的完成方式有一个大致的了解,但似乎无法前进。具体来说,有一件事是如何标记机器人去过的地方,以便我知道其他机器人应该停在哪里,我想出的每个解决方案似乎都非常慢。谢谢。

1 个答案:

答案 0 :(得分:0)

为帮助您开发算法,我为您提供了一种可能的数据结构:

typedef struct LIST {
    int sample;
    struct LIST *next;
} t_list;

typedef struct ITEM {
    t_list *samples;
    int visited;
} t_item;

t_item items[10][10];

这定义了一个10x10项的数组。每个项目都有一个样本列表和一个已被访问(“污染”)的指示器。列表元素(样本)具有样本值和指向下一个列表元素(下一个样本)的指针。我希望这会有所帮助。