Difference between revisions of "TADM2E 3.28"

From Algorithm Wiki
Jump to: navigation, search
(Using <pre> for source code. There might be something better.)
Line 9: Line 9:
 
-------------------------------------------------------------------------------------
 
-------------------------------------------------------------------------------------
 
Using Iteration
 
Using Iteration
-------------------------------------------------------------------------------------
+
 
 +
<pre>
 
public class Multiplication {
 
public class Multiplication {
 
 
 
 
 
       private static int productLeft(int[] x,int i,int j){
 
       private static int productLeft(int[] x,int i,int j){
Line 38: Line 37:
 
   }
 
   }
 
}
 
}
 +
</pre>
  
 
--[[User:Tnoumessi|Tnoumessi]] ([[User talk:Tnoumessi|talk]]) 00:21, 8 April 2015 (EDT)
 
--[[User:Tnoumessi|Tnoumessi]] ([[User talk:Tnoumessi|talk]]) 00:21, 8 April 2015 (EDT)

Revision as of 09:12, 8 November 2015

Insert non-formatted text hereInsert non-formatted text here</nowiki>We need two pass over X:

1. Calculate cumulative production P and Q:
$ P_0 = 1, P_k=X_k P_{k-1}=\prod_{i=1}^kx_i $
$ Q_n = 1, Q_k=X_k Q_{k+1}=\prod_{i=k}^nx_i $

2. Calculate M:
$ M_k=P_{k-1}Q_{k+1}, k\in[1,n] $


Using Iteration

public class Multiplication {
	
       private static int productLeft(int[] x,int i,int j){
		if(i<0)
			return 1;
		return x[i]*productLeft(x, i-1, j);
	}
       private static int productRight(int[] x,int i,int j){
		if(i>=j)
			return 1;
		return x[i]*productRight(x, i+1, j);
	}
        private static int product(int[] x,int[] y,int i,int j){	
	   if(i==j){
		   return productLeft(x, i-2, j);
        }
	return x[i]*productLeft(x, i-2, j)*productRight(x, i+1, j);
            }
   public static int[] product(int[] x){	   
	   int[] M=new int[x.length];
	   for (int i=0;i<x.length;i++){
		    M[i]=product(x, M, i+1, x.length); 
	   }
	   return M;
   }
}

--Tnoumessi (talk) 00:21, 8 April 2015 (EDT)