Isto irá apagar a página "Home"
. Por favor, certifique-se.
Минимальные потери
using System; using System.ComponentModel;
namespace MyApp // Note: actual namespace depends on the project name. {
internal class Program
{
static void Reading(string path, string path1, string path2)
{
int k = 0;
int g = 0;
int h = 0;
int l = 0;
using (StreamReader sr = new StreamReader(path))
{
while (sr.EndOfStream != true)
{
string[] array = sr.ReadLine().Split(";");
k++;
g = array.Length;
}
}
int[,] arr = new int[k, g];
using (StreamReader sr = new StreamReader(path))
{
for (int i = 0; i < k; i++)
{
string[] array = sr.ReadLine().Split(";");
for (int j = 0; j < g; j++)
{
arr[i, j] = Convert.ToInt32(array[j]);
}
}
}
using (StreamReader sr = new StreamReader(path1))
{
while(sr.EndOfStream!=true)
{
string[] array = sr.ReadLine().Split(";");
h = array.Length;
}
}
using (StreamReader sr = new StreamReader(path2))
{
while (sr.EndOfStream != true)
{
string[] array = sr.ReadLine().Split(";");
l = array.Length;
}
}
int[] post = new int[h];
int[] potr = new int[l];
using (StreamReader sr = new StreamReader(path1))
{
while (sr.EndOfStream != true)
{
string[] array = sr.ReadLine().Split(";");
for (int i = 0; i < h; i++)
{
post[i] = Convert.ToInt32(array[i]);
}
}
}
using (StreamReader sr = new StreamReader(path2))
{
while (sr.EndOfStream != true)
{
string[] array = sr.ReadLine().Split(";");
for (int i = 0; i < l; i++)
{
potr[i] = Convert.ToInt32(array[i]);
}
}
}
Process(arr, k, g, post, potr, h, l);
}
static void Process(int[,] arr, int n, int m, int[] post, int[] potr, int v, int x)
{
int sum1 = 0;
int sum2 = 0;
Console.WriteLine("Исходная матрица: ");
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
Console.Write(arr[i, j] + " ");
}
Console.WriteLine();
}
//Первый массив
Console.WriteLine("");
Console.WriteLine("Поставки: ");
Console.WriteLine("");
for (int i = 0; i < v; i++)
{
Console.Write("{0} ", post[i]);
}
Console.WriteLine("");
Console.WriteLine("Потребление: ");
//Второй массив
Console.WriteLine(" ");
for (int i = 0; i < x; i++)
{
Console.Write("{0} ", potr[i]);
}
Console.WriteLine("");
//Проверка суммы
if (sum1 == sum2)
{
Console.WriteLine("\nСуммы спроса и предложения совпадают");
}
else
{
Console.WriteLine("\nСуммы спроса и предложения не совпадают, задача не решаема");
return;
}
int max = arr[0, 0];
for(int i = 0; i < n; i++)
{
for(int j = 0; j < m; j++)
{
if (arr[i, j] > max)
{
max = arr[i, j];
}
}
}
int k = 0;
int f = 0;
int[,] nm = new int[n, m];
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
nm[i, j] = 0;
while (k <= max)
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
if(k == arr[i, j])
{
if (post[i] > potr[j])
{
nm[i, j] = potr[j];
post[i] -= potr[j];
potr[j] -= potr[j];
}
else if (post[i] < potr[j])
{
nm[i, j] = post[i];
potr[j] -= post[i];
post[i] -= post[i];
}
else if (post[i] == potr[j])
{
nm[i, j] = post[i];
post[i] -= post[i];
potr[j] -= potr[j];
}
}
f = nm[i, j] * arr[i, j] + f;
}
}
k++;
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
Console.Write("{0}\t", nm[i, j]);
}
Console.WriteLine();
}
Console.WriteLine("");
Console.Write("Общая сумма - " + f);
}
static void Main(string[] args)
{
string path = "matrix.csv";
string path1 = "post.csv";
string path2 = "potr.csv";
Reading(path, path1, path2);
}
}
}
Северо-Западный
using System; namespace MyApp // Note: actual namespace depends on the project name. {
internal class Program
{
static void Main(string[] args)
{
//Матрица
int sum1 = 0;
int sum2 = 0;
Console.WriteLine("Введите размерность массива по строкам:");
int n = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введите размерность массива по столбцам:");
int m = Convert.ToInt32(Console.ReadLine());
int[,] rp = new int[n, m];
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
Console.WriteLine("Введите " + '[' + i + ", " + j + ']' + " элемент: ");
rp[i, j] = Convert.ToInt32(Console.ReadLine());
}
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
Console.Write("{0}\t", rp[i, j]);
}
Console.WriteLine();
}
//Первый массив
Console.WriteLine(" ");
int v = n;
int[] M = new int[v];
for (int i = 0; i < v; i++)
{
Console.WriteLine("Введите " + '[' + i + ']' + " элемент: ");
M[i] = Convert.ToInt32(Console.ReadLine());
sum1 = sum1 + M[i];
}
Console.WriteLine("");
for (int i = 0; i < v; i++)
{
Console.Write("{0} ", M[i]);
}
//Второй массив
Console.WriteLine("\n");
int x = m;
int[] N = new int[x];
for (int i = 0; i < x; i++)
{
Console.WriteLine("Введите " + '[' + i + ']' + " элемент: ");
N[i] = Convert.ToInt32(Console.ReadLine());
sum2 = sum2 + N[i];
}
Console.WriteLine(" ");
for (int i = 0; i < x; i++)
{
Console.Write("{0} ", N[i]);
}
Console.WriteLine("");
//Проверка суммы
if (sum1 == sum2)
{
Console.WriteLine("\nСуммы спроса и предложения совпадают");
}
else
{
Console.WriteLine("\nСуммы спроса и предложения не совпадают, задача не решаема");
return;
}
int f = 0;
int[,] nm = new int[n, m];
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
nm[i, j] = 0;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
if (M[i] > N[j])
{
nm[i, j] = N[j];
M[i] -= N[j];
N[j] -= N[j];
}
else if (M[i] < N[j])
{
nm[i, j] = M[i];
N[j] -= M[i];
M[i] -= M[i];
}
else if (M[i] == N[j])
{
nm[i, j] = M[i];
M[i] -= M[i];
N[j] -= N[j];
}
f = nm[i, j] * rp[i, j] + f;
}
}
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
{
Console.Write("{0}\t", nm[i, j]);
}
Console.WriteLine();
}
Console.WriteLine("");
Console.Write("Общая сумма - " + f);
}
}
} Метод Джонсона
using System; using System.IO; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;
namespace Djo {
internal class Program
{
static void show(List<int> l)
{
for(int i = 0; i < l.Count; i+=2)
{
Console.WriteLine("{0,-2} {1}",l[i],l[i + 1]);
}
}
static void show(int[,] mas)
{
for(int i = 0; i < mas.GetLength(0); i++)
{
for(int j = 0; j < mas.GetLength(1); j++)
{
Console.Write(mas[i,j] + " ");
}
Console.WriteLine();
}
}
static void readFiles(List<string> startDate)
{
string[] file = File.ReadAllLines("Изначальное распределение.txt");
for (int i = 0; i < file.Length; i++)
{
startDate.AddRange(file[i].Split(' '));
}
}
static void twoListAboutMachine(List<string> startDate, List<int> OneMachine, List<int> TwoMachine)
{
string[,] startTable = new string[startDate.Count / 2, 2];
for (int ind = 0, i = 0; ind < startDate.Count; ind += 2, i++)
{
startTable[i, 0] = startDate[ind];
startTable[i, 1] = startDate[ind + 1];
Console.WriteLine(startTable[i, 0] + " " + startTable[i, 1]);
}
while (true)
{
if (OneMachine.Count + TwoMachine.Count != startDate.Count)
{
for (int i = 0; i < startTable.GetLength(0); i++)
{
if (Convert.ToInt32(startTable[i, 0]) < Convert.ToInt32(startTable[i, 1]))
{
OneMachine.Add(Convert.ToInt32(startTable[i, 0]));
OneMachine.Add(Convert.ToInt32(startTable[i, 1]));
}
else
{
TwoMachine.Add(Convert.ToInt32(startTable[i, 0]));
TwoMachine.Add(Convert.ToInt32(startTable[i, 1]));
}
}
}
else
{
break;
}
}
}
static void convertListToInt(List<int> listmachine, int[,] masmaschine)
{
for (int i = 0, j=0; i < masmaschine.GetLength(0); i++,j++)
{
masmaschine[i, 0] = listmachine[j];
j++;
masmaschine[i, 1] = listmachine[j];
}
}
static void sortList(List<int> OneMachine, List<int> TwoMachine, int[,] finalyDate)
{
int[,] One = new int[OneMachine.Count / 2, 2];
int[,] Two = new int[TwoMachine.Count / 2, 2];
convertListToInt(OneMachine, One);
convertListToInt(TwoMachine, Two);
Console.WriteLine("SORTING");
int indexe = 0;
for (int i=0; i < One.GetLength(0); i++)
{
for (int j = i + 1; j < One.GetLength(0); j++)
{
if (One[i, 0] > One[j, 0])
{
int temp = One[i, 0];
One[i, 0] = One[j , 0];
One[j , 0] = temp;
temp = One[i, 1];
One[i, 1] = One[j , 1];
One[j , 1] = temp;
}
else if (One[i, 0] == One[j , 0])
{
if (One[i, 1] < One[j , 1])
{
int temp = One[i, 0];
One[i, 0] = One[j , 0];
One[j , 0] = temp;
temp = One[i, 1];
One[i, 1] = One[j , 1];
One[j , 1] = temp;
}
}
}
File.AppendAllText("Финальное распределение.txt", $"{One[i, 0],-2} {One[i, 1]}");
File.AppendAllText("Финальное распределение.txt", Environment.NewLine);
Console.WriteLine("{0,-2} {1}", One[i, 0], One[i, 1]);
finalyDate[indexe, 0] = One[i, 0];
finalyDate[indexe, 1] = One[i, 1];
indexe ++;
}
for (int i = 0; i < Two.GetLength(0); i++)
{
for (int j = i + 1; j < Two.GetLength(0); j++)
{
if (Two[i, 1] < Two[j , 1])
{
int temp = Two[i, 0];
Two[i, 0] = Two[j , 0];
Two[j , 0] = temp;
temp = Two[i, 1];
Two[i, 1] = Two[j , 1];
Two[j , 1] = temp;
}
else if (Two[i, 1] == Two[j , 1])
{
if (Two[i, 0] > Two[j , 0])
{
int temp = Two[i, 0];
Two[i, 0] = Two[j , 0];
Two[j , 0] = temp;
temp = Two[i, 1];
Two[i, 1] = Two[j , 1];
Two[j , 1] = temp;
}
}
}
File.AppendAllText("Финальное распределение.txt", $"{Two[i, 0],-2} {Two[i, 1]}");
File.AppendAllText("Финальное распределение.txt", Environment.NewLine);
Console.WriteLine("{0,-2} {1}", Two[i, 0], Two[i, 1]);
finalyDate[indexe, 0] = Two[i, 0];
finalyDate[indexe, 1] = Two[i, 1];
indexe++;
}
}
static void SearchOptimalTime(int[,] finalyDate, List<string> startDate)
{
int sum = finalyDate[0,0];
int max = finalyDate[0, 0];
for (int i = 1; i < finalyDate.GetLength(0); i++)
{
sum += finalyDate[i,0]-finalyDate[i-1,1];
if (max < sum)
{
max = sum;
}
}
Console.WriteLine("Время простоя при оптимальной перестановке: " + max);
int[,] mas = new int[startDate.Count / 2, 2];
for (int i = 0, j = 0; i < mas.GetLength(0); i++, j++)
{
mas[i, 0] = Convert.ToInt32(startDate[j]);
j++;
mas[i, 1] = Convert.ToInt32(startDate[j]);
}
sum = mas[0, 0];
max = mas[0, 0];
for (int i = 1; i < mas.GetLength(0); i++)
{
sum += mas[i, 0] - mas[i - 1, 1];
if (max < sum)
{
max = sum;
}
}
Console.WriteLine("Время простоя второй машины при первичном порядке: " + max);
}
static void Main(string[] args)
{
File.WriteAllText("Финальное распределение.txt", "");
List<string> startDate = new List<string>();
readFiles(startDate);
List<int> OneMachine = new List<int>();
List<int> TwoMachine = new List<int>();
twoListAboutMachine(startDate, OneMachine,TwoMachine);
int[,] finalyDate = new int[startDate.Count/2, 2];
sortList(OneMachine, TwoMachine, finalyDate);
SearchOptimalTime(finalyDate, startDate);
Console.ReadKey();
}
}
}
Метод Прюфера (кодирование)
using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using test;
namespace Proofer {
internal class Program
{
static void Main(string[] args)
{
try
{
string path = "Ribs.txt";
int k = 0;
using (StreamReader sr = new StreamReader(path))
{
while (sr.EndOfStream != true)
{
string[] array = sr.ReadLine().Split(' ');
k++;
}
}
Trace.Listeners.Add(File.OpenText(path));
Debug.WriteLine("Количество рёбер в файле: "+k);
Code code = new Code(path);
code.Action(k);
//Decoding dec = new Decoding();
//dec.Action(k-1);
Console.ReadKey();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
}
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;
namespace test {
internal class Code
{
string path;
public Code(string path)
{
this.path = path;
}
public void Action( int Count)
{
try
{
string[] array = new string[Count];
string[] sp = new string[2];
array = File.ReadAllLines(path);
List<int> Start = new List<int>();
List<int> End = new List<int>();
List<int> Proofer = new List<int>();
for(int i = 0; i< array.Length; i++)
{
sp = array[i].Split(' ');
Start.Add(Convert.ToInt32(sp[0]));
End.Add(Convert.ToInt32(sp[1]));
}
int min;
int index = 0;
for(int i = 0; i< End.Count-1; i++)
{
min = 10000;
for(int j = 0; j< End.Count; j++)
{
if ((End[j]<min) && (Start.Contains(End[j])==false) && (End[j] != 0))
{
min = End[j];
}
}
if(Start.Contains(min) == false)
{
index = End.IndexOf(min);
Proofer.Add(Start[index]);
End[index] = 0;
Start[index] = 0;
}
}
Console.WriteLine("Код Прюфера: ");
foreach(int i in Proofer)
{
Console.Write(i+" ");
}
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
}
юнит тесты
using Proofer; using System.Diagnostics; using test; namespace Tests { public class UnitTest1 { [Fact] public void EqualsNumber() { string path = "Ribs.txt"; string[] array = { }; List V = new List(); using (StreamReader reader = new StreamReader(path)) { while(reader.EndOfStream != true) { array = reader.ReadLine().Split(' '); V.Add(array[0]); Debug.WriteLine(V[0]); } } Assert.Contains("6", V); } } }
Isto irá apagar a página "Home"
. Por favor, certifique-se.