一个很简单的C#例子,给网友解答的,总觉得应该有更简单的方法

 求工作天數的問題,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[51057128 };
         
int[] b = new int[51420151015 };
         
int[] c = new int[51830202522 };
         
int[] d = new int[5358182012 };
         
int[] e = new int[5201381017 };
         
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();
        }

  }

}
 
  


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值