PDA

View Full Version : سوال: مشکل در کد نویسی ضرب زنجیره ای ماتریس



merlin_vista
یک شنبه 04 دی 1390, 18:15 عصر
سلام .
تابع minMul من همیشه صفر برمیگردونه میخواستم ببینم دلیلش چیه ؟
میشه واسم یه چکی بکنید ببینید درست کار میده ؟
با تشکر

private static int minmult(int n, int[] d)
{

int i, j, k, diagonal, temp;

int[,] M = new int[10, 10];


for (i = 0; i < 10; i++)
for (j = 0; j < 10; j++)
M[i, j] = 0;



for (diagonal = 0; diagonal <= n - 1; diagonal++)

for (i = 1; i <= n - diagonal; i++)
{

j = i + diagonal;

temp = k = i; M[i, j] = M[i, k] + M[k + 1, j] + d[i - 1] * d[k] * d[j];

for (k = i + 1; k < j; k++)

if ((M[i, k] + M[k + 1, j] + d[i - 1] * d[k] * d[j]) < M[i, j])
{

M[i, j] = M[i, k] + M[k + 1, j] + d[i - 1] * d[k] * d[j];

temp = k;

}

p[i, j] = temp;

}

return M[1, n];

}

private static void order(int i, int j)
{

int k;

if (i == j)

Console.Write("A" + i.ToString());

else
{

k = p[i, j];

Console.Write(" ( ");

order(i, k);

order(k + 1, j);

Console.Write(" ) ");


}


}



تابع main :

public static int[,] p = new int[10, 10];
static void Main(string[] args)
{

int i, j, n, result;
int[] d;
Console.WriteLine("Welcome, Please enter the number of Matrix (Max 10):");

n = Convert.ToInt32(Console.ReadLine());

d = new int[n];

for (i = 0; i < n; i++)
{


Console.WriteLine("The number of rows for Matrix : ");
d[i] = Convert.ToInt32(Console.ReadLine());

//Console.WriteLine("The number of columns for Matrix : ");
//d[i + 1] = Convert.ToInt32(Console.ReadLine());


}

result = minmult(n, d);

order(1, n);

Console.WriteLine("The number of multiplication is: " + result.ToString());


Console.Read();



}

با تشکر :قلب: