누적 된 큐브의 배열을 정렬하려고합니다. 배열은 다음과 같을 것이다 이 배열을 올바르게 정렬하려면 어떻게합니까?
Nth Cube | Position (0, its on the desk, >0, its on another cube)
---
1|6
---
2|8
---
3|0
---
4|0
---
5|0
---
6|0
---
7|1
---
8|4
---
내가 다른 일에있는 큐브 정리
[7] [2]
---
[1] [8]
---
[6] [4] [3] [5]
---
을 시각화이 (예를 들어)과 같습니다
문자열 [,] 이 경우 t는 전체 배열입니다.
static string[,] stackedCubes(string[,] t)
{
string[,] stackedHelp = new string[NumberOfStacked(),2];
int j = 0;
for (int i = 0; i < t.GetLength(0); i++)
{
if (t[i, 1]!="0")
{
stackedHelp[j, 0] = t[i, 0];
stackedHelp[j, 1] = t[i, 1];
j++;
}
}
return stackedHelp;
}
로 나오는 691,363,210
:
1|6
---
2|8
---
7|1
---
8|4
---
지금 여기부터 (당시 너무 7/2 1/8) 정상에서
문자열 [,] t 그들을 내려 놓으려고 메신저 stackedCubes입니다 여기
static string[,] Putdown(string[,] t)
{
string[,] stackedOrder = new string[NumberOfStacked(), 2];
int j = 0;
do
{
for (int i = 0; i < t.GetLength(0); i++)
{
if (t[i, 1] == t[j, 0])
{
j = i;
}
else if(IsSomethingOnTheCube(t[j,0],t)==false)
{
stackedOrder[i, 0] = t[j, 0];
stackedOrder[i, 1] = "0";
t[i, 1] = "0";
}
}
}
while (AreAllTheCubesOnTable(t) != true);
return stackedOrder;
}
그것에 것이 있으면 제 큐브가는 IM 1 (t 된 [j에 0]) 및 확인이 t에 발견은 [I 1] 및 7 (t의 [백 준다 j, 0]) 그리고 되돌아 간다. 나는 또한 확인 여기
static bool IsSomethingOnTheCube(string Cube,string[,] t)
{
for (int i = 0; i < t.GetLength(0); i++)
{
if(Cube==t[i,1])
{
return true;
}
}
return false;
}
큐브에 뭔가합니다 (DO-동안 함께) 책상에
static bool AreAllTheCubesOnTable(string[,] t)
{
for (int i = 0; i < t.GetLength(0); i++)
{
if (t[i, 1] != "0")
{
return false;
}
}
return true;
}
모두를 수 있는지 여부가 있는지 확인하고 출력은 모든 잘못 :
7|0
---
7|0
---
7|0
---
7|0
---
이 같은해야 할 때 :
7|0
---
1|0
---
2|0
---
8|0
---
,691을 내가 잘못 색인하고 363,210
는? (또는 뭔가 다른) 샘플에서
예상되는 결과는 무엇입니까 (7 | 0, 1 | 0, 2 | 0, 8 | 0)은? – EpicSam
Putdown()의 반환 값 - 문자열 [,] stackedOrder - 다 완료되었을 때 – throwjdoe
질문에 도메인 언어를 사용하는 것이 혼란 스럽습니다. "책상 위에"있거나 "다른 큐브 위에"있는 "큐브"는 뇌 외부의 사람들이나 알고있는 사람들에게는 절대적으로 아무 의미가 없습니다. 일반 코드로 말하십시오. – eurotrash