-4
我有這樣的代碼:我如何檢查列表長度是否比上次更長?
int LRLength = LR.Count;
for (int i = 0; i < LR.Count; i++)
{
LRLength = LR.Count;
LR = merge(LR);
if (LR.Count < LRLength)
{
LR = merge(LR);
if (LR.Count == LRLength)
{
break;
}
}
}
這是功能合併:
private List<Lightnings_Extractor.Lightnings_Region> merge(List<Lightnings_Extractor.Lightnings_Region> Merged)
{
List<Lightnings_Extractor.Lightnings_Region> NewMerged = new List<Lightnings_Extractor.Lightnings_Region>();
Lightnings_Extractor.Lightnings_Region reg;
int dealtWith = -1;
for (int i = 0; i < Merged.Count; i++)
{
if (i != dealtWith)
{
reg = new Lightnings_Extractor.Lightnings_Region();
if (i < Merged.Count - 1)
{
if (Merged[i].end + 1 >= Merged[i + 1].start)
{
reg.start = Merged[i].start;
reg.end = Merged[i + 1].end;
NewMerged.Add(reg);
dealtWith = i + 1;
}
else
{
reg.start = Merged[i].start;
reg.end = Merged[i].end;
NewMerged.Add(reg);
}
}
else
{
reg.start = Merged[i].start;
reg.end = Merged[i].end;
NewMerged.Add(reg);
}
}
}
return NewMerged;
}
在這個類:Lightnings_Extractor.Lightnings_Region我只有兩個int變量。 這個函數的想法是得到一個List和合並的區域。
例如,一旦我調用函數和列表LR長度是8,現在我會減少它。例如,如果它需要將兩個索引合併爲一個,那麼List將返回長度爲7.如果需要合併另一個索引,則長度將爲6,依此類推。
我想檢查上面的第一個代碼是當我應該停止調用函數來合併索引。
如果長度爲8,下一次仍然是8,則不要停止循環。 如果長度爲8,下一次爲7,則再次調用該函數。 如果長度是7停止循環。但是如果長度是6,請再次調用它。
直到最後的長度將與之前的長度相同!
所以,我想這個代碼,但它不是良好的工作:
int LRLength = LR.Count;
for (int i = 0; i < LR.Count; i++)
{
LRLength = LR.Count;
LR = merge(LR);
if (LR.Count < LRLength)
{
LR = merge(LR);
if (LR.Count == LRLength)
{
break;
}
}
}
即時通訊抱歉,但多數民衆贊成在混亂,請嘗試和打破問題 – craig1231 2013-02-09 20:34:48
好吧,我會編輯我的問題與更多的信息。 – 2013-02-09 20:41:16
如果我們知道Merge()做了什麼,它可能會有所幫助。如何解釋你想要完成的事情。 – Sinaesthetic 2013-02-09 20:41:20