我正在做一些文件分析,在文件中標記探索區域。現在我想找到un探索區域,所以我知道接下來要看什麼。這非常類似於碎片整理軟件針對免費和使用區域顯示的內容。哪種算法可以找到數字範圍內的空數字範圍?
例子:
在這張圖片中,讓我們說,探索區域是紅色的,未開發的區域是灰色的。我需要從這些紅色區域確定灰色區域邊界。
我當前的代碼,它記錄什麼已經讀過一個自定義的二進制讀者:
public class CustomBinaryReader : BinaryReader {
private readonly List<Block> _blocks;
public CustomBinaryReader([NotNull] Stream input) : this(input, Encoding.Default) { }
public CustomBinaryReader(Stream input, Encoding encoding, bool leaveOpen = true) : base(input, encoding, leaveOpen) {
_blocks = new List<Block>();
}
public override byte[] ReadBytes(int count) {
Log(count);
return base.ReadBytes(count);
}
private void Log(int count) {
_blocks.Add(new Block(BaseStream.Position, count));
}
private IEnumerable<Block> GetUnreadBlocks() {
// how to get unread blocks in the stream, from read blocks ?
throw new NotImplementedException();
}
}
和限定區域是什麼類型:
public class Block {
public Block(long position, long length) {
Position = position;
Length = length;
}
public long Position { get; }
public long Length { get; }
}
問題:
是否有一類算法或數據結構來解決此類問題(如樹或圖)?如果這樣的事情不存在,你可以給我一些方法或提示如何解決這個問題?
基於圖像或原始數據? – stybl
它將基於一個包含兩個成員的結構:'position'和'length' – Aybe
請更新問題與您用於存儲數據的實際數據結構,以便人們可以提供幫助 –