标签:解决 mon view 指点 好处 cat mount ges 计算
题目:现在有1分、2分、5分硬币共100个,总金额为2.46元,请用程序计算出1分、2分、5分各有多少枚,有多少种算法?
这是最近面试遇到的一个题目,刚开始没有思路,一看这是一个三元一次方程组,假设个数分别为a、b、c的话,就会有三个未知数和两个方程组,怎么解?数学真是白学了!
于是在网上搜到了这个题目,不过题目略有不同:
文件:Program1.cs
//问题:1分2分5分硬币,一共2.46元,求各种硬币的个数 //回答:你没说明是不是求需要的最少的硬币的个数,因为这样有上千种组成,所以我就给你写个控制台的,求需要最少的硬币个数吧 using System; namespace ConsoleApplication1 { class Program1 { static void Main(string[] args) { int money = 246; //总共246分 int number5; //number5表示需要5分的硬币个数 int number2; //number2表示需要2分的硬币个数 int number1; //number1表示需要1分的硬币个数 number5 = money / 5; number2 = (money % 5) / 2; number1 = money % 5 % 2; Console.WriteLine("需要:" + "\n" + "5分的硬币:" + number5 + "个" + "\n" + "2分的硬币:" + number2 + "个" + "\n" + "1分的硬币:" + number1 + "个"); Console.ReadLine(); } } }
运行结果:
按照这个哥们儿的思路,设置三个未知数这一点与我是相同的,他给我的启发有下面几点:
/* a + b + c = 100; a + 2b + 5c = 246; b = 246 - 100 - 4c; a = 3c - 246 + 2*100; */
文件:Program2.cs
using System; namespace ConsoleApplication2 { class Program2 { static void Main(string[] args) { int money = 246; //总共246分 int amount = 100; int number5; //number5表示需要5分的硬币个数 int number2; //number2表示需要2分的硬币个数 int number1; //number1表示需要1分的硬币个数 int count = 0; for (int i = 0; i < money/5; i++) { number5 = i; number2 = money - amount - 4 * number5; number1 = 3 * number5 - money + 2 * amount; if (number2 >= 0 && number1 >= 0) { Console.WriteLine("5分:{0}个,2分:{1}个,1分:{2}个", number5, number2, number1); count++; } } Console.WriteLine("共有{0}种算法……", count); Console.ReadLine(); } } }
计算结果:
到此结束,如果上述过程中有任何的错误或者谁有更好的方法,希望看到的朋友不吝赐教,多多指点!
InterviewQuestion_C#_Probl_计算1分2分5分硬币各有多少枚
标签:解决 mon view 指点 好处 cat mount ges 计算
原文地址:http://www.cnblogs.com/jswl/p/7492678.html