는이 코드가 있습니다목록 길이가 마지막 시간보다 큰지 어떻게 확인합니까?
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 Length가 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
Ok. 더 많은 정보를 가지고 제 질문을 편집하겠습니다. –
Merge()가 무엇을했는지 알면 도움이 될 것입니다. 당신이 성취하려는 것을 설명하는 것은 어떻습니까? – Sinaesthetic