| 
						
						
						
					 | 
					 | 
					@ -1,7 +1,9 @@ | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					using System; | 
					 | 
					 | 
					 | 
					using System; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					using System.Collections.Generic; | 
					 | 
					 | 
					 | 
					using System.Collections.Generic; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					using System.Diagnostics; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					using System.Linq; | 
					 | 
					 | 
					 | 
					using System.Linq; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					using System.Text; | 
					 | 
					 | 
					 | 
					using System.Text; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					using System.Threading; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					using System.Threading.Tasks; | 
					 | 
					 | 
					 | 
					using System.Threading.Tasks; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					using Combinatorics.Collections; | 
					 | 
					 | 
					 | 
					using Combinatorics.Collections; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					using static System.Console; | 
					 | 
					 | 
					 | 
					using static System.Console; | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -14,6 +16,7 @@ namespace predprs | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        { | 
					 | 
					 | 
					 | 
					        { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            double[,] matrix = new double[,] | 
					 | 
					 | 
					 | 
					            double[,] matrix = new double[,] | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            { | 
					 | 
					 | 
					 | 
					            { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                { 0, 0, 0, 0, 0 }, | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                { 0.5, 0.1, 0.6, 0.3, 1.0 }, | 
					 | 
					 | 
					 | 
					                { 0.5, 0.1, 0.6, 0.3, 1.0 }, | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                { 1.0, 0.5, 1.1, 0.6, 1.2 }, | 
					 | 
					 | 
					 | 
					                { 1.0, 0.5, 1.1, 0.6, 1.2 }, | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                { 1.4, 1.2, 1.2, 1.3, 1.3 }, | 
					 | 
					 | 
					 | 
					                { 1.4, 1.2, 1.2, 1.3, 1.3 }, | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -26,30 +29,60 @@ namespace predprs | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                { 3, 3.5, 1.8, 1.5, 1.3 } | 
					 | 
					 | 
					 | 
					                { 3, 3.5, 1.8, 1.5, 1.3 } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            }; | 
					 | 
					 | 
					 | 
					            }; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            for(int i = 0; i < 10; i++) | 
					 | 
					 | 
					 | 
					            for(int i = 0; i < matrix.GetLength(0); i++) | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            { | 
					 | 
					 | 
					 | 
					            { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                for (int j = 0; j < 5; j++) Write("{0:0.0} ", matrix[i, j]); | 
					 | 
					 | 
					 | 
					                for (int j = 0; j < matrix.GetLength(1); j++) Write("{0:0.0} ", matrix[i, j]); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                WriteLine(); | 
					 | 
					 | 
					 | 
					                WriteLine(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            } | 
					 | 
					 | 
					 | 
					            } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            WriteLine("\n\n"); | 
					 | 
					 | 
					 | 
					            WriteLine("\n\n"); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            int[] data = new int[11]; | 
					 | 
					 | 
					 | 
					            int[] data = new int[11]; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            for (int i = 0; i < 11; i++) data[i] = i; | 
					 | 
					 | 
					 | 
					            for (int i = 0; i < 11; i++) data[i] = i; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            foreach (int i in data) Write(i + " "); | 
					 | 
					 | 
					 | 
					            //foreach (int i in data) Write(i + " "); | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            WriteLine("\n"); | 
					 | 
					 | 
					 | 
					            WriteLine("\n"); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            int[] data2 = { 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 4, 4, 5, 5, 6, 7, 8, 9, 10 }; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            //Variations<int> variations = new Variations<int>(data, 5); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            Variations<int> variations = new Variations<int>(data2, 5); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            //Permutations<int> variations = new Permutations<int>(data, GenerateOption.WithRepetition); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            double result = 0, best = 0; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            string bestStr = string.Empty; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            Stopwatch sw = new Stopwatch(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            sw.Start(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            List<string> resus = new List<string>(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            Variations<int> variations = new Variations<int>(data, 5); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            string vformat = "Variations of {{A B C D}} choose 2: size = {0}"; | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            WriteLine(string.Format(vformat, variations.Count)); | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            foreach (IList<int> v in variations) | 
					 | 
					 | 
					 | 
					            foreach (IList<int> v in variations) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            { | 
					 | 
					 | 
					 | 
					            { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                if (v[0] + v[1] + v[2] + v[3] + v[4] == 10) | 
					 | 
					 | 
					 | 
					                if (v[0] + v[1] + v[2] + v[3] + v[4] == 10) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                { | 
					 | 
					 | 
					 | 
					                { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    WriteLine(string.Format("[{0} {1} {2} {3} {4}]", v[0], v[1], v[2], v[3], v[4])); | 
					 | 
					 | 
					 | 
					                    result = matrix[v[0], 0] + matrix[v[1], 1] + matrix[v[2], 2] + matrix[v[3], 3] + matrix[v[4], 4]; | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    if (result > best) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                        best = result; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                        bestStr = string.Format("[{0} {1} {2} {3} {4}]", v[0], v[1], v[2], v[3], v[4]); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    bool tr = false; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    string r = string.Format("[{0} {1} {2} {3} {4}]", v[0], v[1], v[2], v[3], v[4]); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    foreach (var vr in resus) if (r != vr) tr = true; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    if (result == 5.4 && tr) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    { | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                        resus.Add(r); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                        tr = false; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    //WriteLine("[{0} {1} {2} {3} {4}]   {5}", v[0], v[1], v[2], v[3], v[4], result); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    //Thread.Sleep(100); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                } | 
					 | 
					 | 
					 | 
					                } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            } | 
					 | 
					 | 
					 | 
					            } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            foreach (string s in resus) WriteLine(s); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            sw.Stop(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            WriteLine("Наибольшая прибыль при {0} со значением {1}\n{2} ms", bestStr, best, sw.ElapsedMilliseconds); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            ReadKey(); | 
					 | 
					 | 
					 | 
					            ReadKey(); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        } | 
					 | 
					 | 
					 | 
					        } | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    } | 
					 | 
					 | 
					 | 
					    } | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
  |