조합 데이터 의 출력 (2) 순환 처리
조합 데이터 의 출력 한 글 에 몇 가지 출력 방법 을 열거 하 였 으 나, 모두 재 귀적 인 방법 이지 만, 재 귀적 이지 않 고 순환 만 하 는 방법 은 없 습 니까?그래서 스스로 생각 하기 시 작 했 어 요. 다 알 아 요.
4 개의 요소 의 모든 조합 을 출력 하려 면 4 번, 4 층 의 순환 에 대응 해 야 합 니 다. 5 개의 요소 의 모든 조합 을 출력 하려 면 5 번, 5 층 의 순환 에 대응 해 야 합 니 다. 한 시간 동안 재 귀 를 순환 으로 바 꾸 는 방법 을 찾 지 못 했 습 니 다.그래서 자신 은 가장 간단 한 방법 으로 한 요소 의 조합, 두 요소 의 조합, 세 요소 의 조합 을 생각한다.
뜻밖에도 깨 우 침 이 있 을 줄 은 생각 지도 못 했다.
1, 2, 3 의 조합
고찰: 1 의 조합, 단 1
고찰: 1, 2 의 조합, 1;2;1,2;
고찰: 1, 2, 3 의 조합, 1;2;1,2;1,3;2,3;1,2,3
변경:
고찰: 1 의 조합, {1}
고찰: 1, 2 의 조합, {1};{1,2};{2};
고찰: 1, 2, 3 의 조합, {1};{1,2};{2};{1,3};{2,3};{1,2,3}
다시 한 번 변경:
고찰: 1 의 조합, {1}
고찰: 1, 2 의 조합, {1};2{1};{2};
고찰: 1, 2, 3 의 조합, {1};2{1};{2};3{{1};2{1};{2};} ;{3}; 수학 정 의 를 사용 하면 유사 하 다.
a(1)=1,a(n)=a(n-1)+n(a(n-1))+n
하나의 원 소 를 추가 할 때마다 실제 적 으로 이미 집합 한 모든 집합 에 이 새로운 원 소 를 추가 하 는 것 을 발견 했다.그리고 이 새로운 원소 의 집합 을 더 하면
그래서 순환 만 사용 하 는 조합 알고리즘 이 생 겼 다.
public static void CreatSumData4(List<string> columnNameList)
{
List<string> list = new List<string>();
for (int i = columnNameList.Count-1;i>=0 ; i--)
{
string name=columnNameList[i];
int count = list.Count;
for (int j = 0; j < count; j++)
{
string item = list[j];
list.Add(name+","+item);
}
list.Add(name);
}
StringBuilder strs = new StringBuilder();
for (int j = 0; j < list.Count; j++)
{
string item = list[j];
strs.AppendLine(item);
}
WrieData(strs.ToString());
}
private static void WrieData(string text)
{
string file = "ZuheTestout.js";
StreamWriter sr = new StreamWriter(file);
sr.WriteLine(text);
sr.Close();
}
public static void Test()
{
List<string> columns = new List<string>();
columns.Add("c0");
columns.Add("c1");
columns.Add("c2");
columns.Add("c3");
columns.Add("c4");
// CreatSumData1(columns);
// string text = CreateAllGroupingData(columns);
// WrieData(text);
CreatSumData4(columns);
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.