求工作天數的問題,5項工作分配給5個人,求出有多少個分配組合,並求出最快的組合。
王 张 李 赵 刘
工作1 {10, 5, 7, 12, 8},
工作2 {14, 20, 15, 10, 15},
工作3 {18, 30, 20, 25, 22},
工作4 {35, 8, 18, 20, 12},
工作5 {20, 13, 8,10, 17},
数值是代表每人所需的工作天数。
using
System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
... {
class Program
...{
static void Main(string[] args)
...{
int[] a = new int[5] ...{ 10, 5, 7, 12, 8 };
int[] b = new int[5] ...{ 14, 20, 15, 10, 15 };
int[] c = new int[5] ...{ 18, 30, 20, 25, 22 };
int[] d = new int[5] ...{ 35, 8, 18, 20, 12 };
int[] e = new int[5] ...{ 20, 13, 8, 10, 17 };
int[] result=new int[120];
int num = 0;
for (int i = 0; i < 5; i++)
...{
for (int j = 0; j < 5; j++)
...{
if (j == i)
continue;
else
...{
for (int k = 0; k < 5; k++)
...{
if (k == j || k == i)
continue;
else
...{
for (int l = 0; l < 5; l++)
...{
if (l == k || l == j || l == i)
continue;
else
...{
for (int m = 0; m < 5; m++)
...{
if (m == l || m == k || m == j || m == i)
continue;
else
...{
int sums =a[i]+b[j]+c[k]+d[l]+ e[m];
result[num] = sums;
num++;
}
}
}
}
}
}
}
}
}
int min; min = result[0];
for (int x = 0; x < 120; x++)
...{
if (result[x] < min)
...{
min = result[x];
continue;
}
Console.WriteLine("The all is:{0}", result[x]); //列出所有可能值
}
Console.WriteLine("The fastest is:{0}",min); //列出最快值
Console.WriteLine("The num is:{0}", num); //列出所有个数
Console.ReadKey();
}
}
}
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
... {
class Program
...{
static void Main(string[] args)
...{
int[] a = new int[5] ...{ 10, 5, 7, 12, 8 };
int[] b = new int[5] ...{ 14, 20, 15, 10, 15 };
int[] c = new int[5] ...{ 18, 30, 20, 25, 22 };
int[] d = new int[5] ...{ 35, 8, 18, 20, 12 };
int[] e = new int[5] ...{ 20, 13, 8, 10, 17 };
int[] result=new int[120];
int num = 0;
for (int i = 0; i < 5; i++)
...{
for (int j = 0; j < 5; j++)
...{
if (j == i)
continue;
else
...{
for (int k = 0; k < 5; k++)
...{
if (k == j || k == i)
continue;
else
...{
for (int l = 0; l < 5; l++)
...{
if (l == k || l == j || l == i)
continue;
else
...{
for (int m = 0; m < 5; m++)
...{
if (m == l || m == k || m == j || m == i)
continue;
else
...{
int sums =a[i]+b[j]+c[k]+d[l]+ e[m];
result[num] = sums;
num++;
}
}
}
}
}
}
}
}
}
int min; min = result[0];
for (int x = 0; x < 120; x++)
...{
if (result[x] < min)
...{
min = result[x];
continue;
}
Console.WriteLine("The all is:{0}", result[x]); //列出所有可能值
}
Console.WriteLine("The fastest is:{0}",min); //列出最快值
Console.WriteLine("The num is:{0}", num); //列出所有个数
Console.ReadKey();
}
}
}