Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 寻找水下城镇的一种算法_Algorithm_Greedy - Fatal编程技术网

Algorithm 寻找水下城镇的一种算法

Algorithm 寻找水下城镇的一种算法,algorithm,greedy,Algorithm,Greedy,假设城镇附近有一座大坝,大坝顶部有一个大洞,如下图所示。 水以1 m2/s的速度从该孔流出,建筑物在水下。 建筑物屋顶长度为1m,高度为整数。 给定一个特定的建筑物,我们必须计算该建筑物在水面以下1米的时间 我正在寻找一个贪婪的算法来计算这一次 我想了好几天,但没有找到好主意。据我所知,填充方式如下: 以下是伪代码中的算法和说明: 1)让inth[]与房屋高度一起排列。索引是房子的编号。所以数组的长度是我们考虑的x范围(或房屋数量)。如果在某个位置没有房子,则会有0(或高度为零的房子) 让f

假设城镇附近有一座大坝,大坝顶部有一个大洞,如下图所示。

水以1 m2/s的速度从该孔流出,建筑物在水下。 建筑物屋顶长度为1m,高度为整数。 给定一个特定的建筑物,我们必须计算该建筑物在水面以下1米的时间

我正在寻找一个贪婪的算法来计算这一次


我想了好几天,但没有找到好主意。

据我所知,填充方式如下:

以下是伪代码中的算法和说明: 1)

inth[]
与房屋高度一起排列。索引是房子的编号。所以数组的长度是我们考虑的x范围(或房屋数量)。如果在某个位置没有房子,则会有0(或高度为零的房子)
float w[]
成为绝对水位高度与
h[]

我的意思是
w[I]-h[I]
=第I栋房子上方的水深
因此,我们首先应该:

copy elements from h[] to w[]
每个程序计算步骤(比如1秒)都将执行步骤2)和进一步操作 2)查找局部最小值的最后一个索引(从左侧开始):

5)
x
作为我们等待在水下1米的房子的索引。因此,决定我们是实现了目标还是应该返回步骤2):

注意

可以对代码进行一点优化。我认为,这仍然是最清楚的形式。

到目前为止,你做了哪些努力?我想了几天,但没有找到任何好主意。你好,阿什坎,很有趣,我是否正确理解了你的问题(见下面的帖子)-你没有接受,也没有发表评论
i=0;
while(w[i+1]<=w[i]){
    i++;
    if(i == w.length-1) 
        break; // or next step will violate array boundaries
}
count = 0;
for(j=0;j<=i;j++)
    if(w[j] == w[i])
        count++;
for(j=0;j<=i;j++)
    if(w[j] == w[i])
        w[j] += flow / count;
if (w[x] - h[x] >= 1m)
    return; // we achieved the goal !!!
else
    repeat from step "2)"