首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

数组的排列组合有关问题

2012-01-22 
数组的排列组合问题publicstaticvoidMain(string[]args){string[] str new string[3]str[0] 12,34

数组的排列组合问题
public static void Main(string [] args)  
{  
string[] str = new string[3];
str[0] = "12,34";
str[1] = "c";
str[2] = "d,f";
Perm(str);
}  
 

static void Perm(params string [] data)  
{  
int[] index = new int[data.Length];  
int i = 0;  
while(true)  
{  
char[] buf = new char[index.Length];  
for(i = 0; i < index.Length; i++)  
{  
buf[i] = data[i][index[i]];  
}  
Console.WriteLine(new string(buf));  
i = index.Length - 1;  
while(i >= 0)  
{  
index[i]++;  
if(index[i] < data[i].Length) break;  
index[i--] = 0;  
}  
if(i < 0) return;

}
}
我想得到12,c,d
12,c,f
34,c,d
34,c,f
但是我从网上找的这个代码总把12,34拆开
那位能帮帮我啊!

[解决办法]

C# code
        static void Main(string[] args)        {            string[] str = new string[3];            str[0] = "12,34";            str[1] = "c,d";            str[2] = "d,f";            Matrix m = new Matrix(str[0].Split(','));            for (int i = 1; i < str.Length; i++)            {                m = m.Multiply(new Matrix(str[i].Split(',')));            }            foreach (string s in m.element)            {                Console.WriteLine(s);            }        }        struct Matrix        {            public string[] element;            public Matrix(string[] s)            {                element = s;            }            public Matrix Multiply(Matrix m)            {                string[] s = new string[this.element.Length * m.element.Length];                int index = 0;                for (int i = 0; i < this.element.Length; i++)                {                    for (int j = 0; j < m.element.Length; j++)                    {                        s[index] = this.element[i] + "," + m.element[j];                        index++;                    }                }                return new Matrix(s);            }        } 

热点排行