对经典算法百鸡百钱问题的优化解决,使其时间复杂度为n,并附有常规n^2的方法检验结果...

 1 static void Main(string[] args)
 2         {
 3             int n;//问题规模
 4             int count = 0;//记录循环的次数
 5             int res=0;//记录寻找到的结果又几种
 6             Console.WriteLine("请输入问题规模n的值:");
 7             n = Convert.ToInt32(Console.ReadLine());
 8             TestOne(n, ref count,ref res);
 9             Console.WriteLine("方法一运行次数:" + count + "次;"+"结果有"+res+"种。");
10 
11             count = 0;res=0;
12             TestTwo(n,ref count,ref res);
13 
14             Console.WriteLine("方法二运行次数:" + count +  "次;"+"结果有"+res+"种。");
15             Console.ReadKey();
16         }
 1         static void TestTwo(int n, ref int count,ref int res)
 2         {
 3             Console.WriteLine("方法二:");
 4             for (int i = 0; i < n; i = i + 3)
 5             {
 6                 count++;
 7 
 8                 if ((((4 * i / 3.0) - n) == Convert.ToInt32((4 * i / 3.0) - n)) && (Convert.ToInt32((4 * i / 3.0) - n) > 0) && ((2 * n - (7 * i / 3.0)) == Convert.ToInt32(2 * n - (7 * i / 3.0))) && (Convert.ToInt32(2 * n - (7 * i / 3.0)) > 0))
 9                     {
10                         if (i > 766)
11                         { }
12                         Console.Write("公鸡有:" + ((4 * i / 3.0) - n) + "只;");
13                         Console.Write("母鸡有:" + (2 * n - (7 * i / 3.0)) + "只;");
14                         Console.Write("小鸡有:" + i + "只。\n");
15                         res++;
16                     }
17                 
18 
19             }
20         }
 1        static void TestOne(int n,ref int count,ref int res)
 2         {
 3             for (int i = 1; i < (n / 5); i++)
 4                 for (int j = 1; j < (n / 3); j++)
 5                 {
 6                     count++;
 7                     if (((n - i - j) % 3 == 0) && (7*i+4*j == n))
 8                     {
 9                         Console.Write("公鸡有:" + i + "只;");
10                         Console.Write("母鸡有:" + j + "只;");
11                         Console.Write("小鸡有:" + (n - i - j) + "只。\n");
12                         res++;
13                     }
14                 }
15         }

 

posted on 2016-03-10 15:20  1988kxj 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/1988kxj/p/5262060.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值