男人,我不知道如果這是你在找什麼,但檢查了這一點:
public static class CharArrayExtension
{
public static char[,] FormatMatrix(this char[][] matrix)
{
int TotalColumns = matrix.Length;
int TotalLines = 0;
//Get the longest line of the current matrix
for (int column = 0; column < TotalColumns; column++)
{
int line = matrix[column].Length;
if (line > TotalLines)
TotalLines = line;
}
//Instantiate the resulting matrix
char[,] Return = new char[TotalColumns, TotalLines];
Return.Initialize();
//Retrieve values from the current matrix
for (int CurrentColumn = 0; CurrentColumn < TotalColumns; CurrentColumn++)
{
int MaxLines = matrix[CurrentColumn].Length;
for (int CurrentLine = 0; CurrentLine < MaxLines; CurrentLine++)
{
Return[CurrentColumn, CurrentLine] = matrix[CurrentColumn][CurrentLine];
}
}
return Return;
}
}
用法:
char[] Length5 = new char[]{ 'a', 'b', 'c', 'd', 'e'};
char[] Length10 = new char[10];
char[][] Matrix = new char[2][];
Matrix[0] = Length5;
Matrix[1] = Length10;
char[,] FormattedMatrix = Matrix.FormatMatrix();
任何反饋將不勝感激。
UPDATE
尼古拉斯指出的性能問題。我很好奇,所以我做了如下的微弱的標杆:
char[] Length5 = new char[]{ 'a', 'b', 'c', 'd', 'e'};
char[] Length10 = new char[10];
char[][] Matrix = new char[2][];
Matrix[0] = Length5;
Matrix[1] = Length10;
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
for (int i = 0; i < 5000; i++)
{
char[,] FormattedMatrix = Matrix.FormatMatrix();
}
stopWatch.Stop();
Console.WriteLine(string.Format("Andre Calil: {0} ms", stopWatch.ElapsedMilliseconds));
stopWatch.Reset();
stopWatch.Start();
for (int i = 0; i < 5000; i++)
{
char[,] FormattedMatrix = RectArrayFromJagged<char>(Matrix);
}
stopWatch.Stop();
Console.WriteLine(string.Format("Nicholas Carey: {0} ms", stopWatch.ElapsedMilliseconds));
Console.ReadLine();
我已經多次運行它,平均結果是:
Andre Calil: 3 ms
Nicholas Carey: 5 ms
我知道那這不是一個適當的基準測試,但像我的解決方案一樣,在性能方面並沒有那麼糟糕。
我覺得你的回答你的問題在那裏:「只需確定最長行的長度,行數,創建char [,]並將它們複製到」 – Almo 2012-08-17 17:59:00
「哦,以及製作Befunge解釋器的道具。這是一個很酷的esolang。我做了一個類似於那麼多年前的衝擊波遊戲,在那裏編寫了像Carnage Heart這樣的機器人。 – Almo 2012-08-17 17:59:50
只有一個解決方案並不能使其成爲最佳解決方案。如果有人能夠以不同的方式指向我,我可以學習更多關於C#的知識。 – 2012-08-17 18:00:24