【戏谈一道面试题】-----之用C#代码解决
2012-10-21 03:00
309 查看
话说昨天一篇文章《戏谈一道面试题》上了评论头条,地址如下/article/5245650.html。
该面试题是一个经典的数据概率问题,而既然是程序员,当然得有程序员的解决方案:用程序来描述业务,然后通过计算机做计算来算出所要的结果。
代码如下:
View Code
各位新建一个控制台程序,然后复制代码过去,按F5,耐心等候45秒,就会告诉你结果。
代码是临时写的,包括命名或者某些方面不足敬请谅解。
该面试题是一个经典的数据概率问题,而既然是程序员,当然得有程序员的解决方案:用程序来描述业务,然后通过计算机做计算来算出所要的结果。
代码如下:
View Code
using System; using System.Collections.Generic; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { int count = 0; int aobamaWinCount = 0; int luomuniWinCount = 0; while (true) { Random r = new Random(unchecked((int)(DateTime.Now.Ticks))); Dictionary<string, string> dcPeople = new Dictionary<string, string>(); dcPeople.Add("奥巴马", ""); dcPeople.Add("罗姆尼", ""); Dictionary<string, string> dcBox = new Dictionary<string, string>(); dcBox.Add("A", "狗屎"); dcBox.Add("B", "狗屎"); dcBox.Add("C", "狗屎"); int treasure_int = r.Next(1, 4); switch (treasure_int) { case 1: dcBox["A"] = "宝物"; break; case 2: dcBox["B"] = "宝物"; break; case 3: dcBox["C"] = "宝物"; break; default: break; } System.Threading.Thread.Sleep(50); //第一次奥巴马选择 int choose_aobama_int = r.Next(1, 4); switch (choose_aobama_int) { case 1: dcPeople["奥巴马"] = "A"; break; case 2: dcPeople["奥巴马"] = "B"; break; case 3: dcPeople["奥巴马"] = "C"; break; default: break; } string theShit = ""; //确定是狗屎的盒子 //罗姆尼选择去掉一坨狗屎,这里有两种情况,第一,奥巴马没猜到狗屎 第二:踩到了 //奥巴马踩到狗屎了 if (dcBox[dcPeople["奥巴马"]] == "狗屎") { foreach (var item in dcBox) { if (item.Value == "狗屎") { theShit = item.Key; } } } else { List<string> abcBox = new List<string>(); abcBox.Add("A"); abcBox.Add("B"); abcBox.Add("C"); abcBox.Remove(dcPeople["奥巴马"]); //在剩下的两个盒子中随机选择一个标记为狗屎 int shit_int = r.Next(0, 2); theShit = abcBox[shit_int]; } //接下来是罗姆尼选择 if (dcBox[dcPeople["奥巴马"]] == "狗屎")//如果奥巴马选择了狗屎,那么罗姆尼肯定知道剩下的哪个是宝物,肯定能选对宝物 { foreach (var item in dcBox) { if (item.Value == "宝物") { dcPeople["罗姆尼"] = item.Key; } } } else//如果奥巴马选中了宝物,那罗姆尼就只能在剩下的两个随机选取了 { int choose_luomuni_int = r.Next(0, 2); List<string> abcBox = new List<string>(); abcBox.Add("A"); abcBox.Add("B"); abcBox.Add("C"); abcBox.Remove(dcPeople["奥巴马"]); dcPeople["罗姆尼"] = abcBox[choose_luomuni_int]; } Console.WriteLine(); Console.WriteLine("-----------------------本轮抽奖结果---------------------------"); Console.WriteLine("奥巴马:抽到【" + dcBox[dcPeople["奥巴马"]] + "】"); Console.WriteLine("罗姆尼:抽到【" + dcBox[dcPeople["罗姆尼"]] + "】"); if (dcBox[dcPeople["奥巴马"]] == "宝物") { aobamaWinCount = aobamaWinCount + 1; } else { luomuniWinCount = luomuniWinCount + 1; } count++; if (count == 900) { Console.WriteLine("游戏结束"); Console.WriteLine("游戏一共进行了"+count+"次"); Console.WriteLine("奥巴马抽到宝物" + aobamaWinCount + "次"); Console.WriteLine("罗姆尼抽到宝物" + luomuniWinCount + "次"); Console.Read(); break; } } } } }
各位新建一个控制台程序,然后复制代码过去,按F5,耐心等候45秒,就会告诉你结果。
代码是临时写的,包括命名或者某些方面不足敬请谅解。
相关文章推荐
- c#代码:使用假设的方法遍历解决“谁养鱼”问题(据说是爱因斯坦所出的一道推理题)
- 数组排序面试题php解决代码
- C#通过代码彻底结束桌面进程explorer,解决自动重启问题
- 面试题:用 wait-notify 写一段代码来解决生产者-消费者问题
- 一道面试题,看这段代码最后抛出什么异常
- wpf C# 解决代码 引用 资源 图片 问题
- C#与.NET程序员面试宝典 2.2.5 面试题12:如何解决因共享组件而导致的应用程序之间的冲突
- C#使用读写锁三行代码简单解决多线程并发写入文件时线程同步的问题
- 从微软的一道面试题谈问题解决之道
- [代码问题解决录A1]c#Listview控件动态添加数据并阻止重复添加
- C#代码辅助工具Visual Assist X 与 VS2005的代码自动提示发生冲突的解决办法
- C#新手入门代码 exe程序闪退的解决方法
- 一道有趣的面试题————待解决的问题
- 史上最全的CSS hack方式一览 jQuery 图片轮播的代码分离 JQuery中的动画 C#中Trim()、TrimStart()、TrimEnd()的用法 marquee 标签的使用详情 js鼠标事件 js添加遮罩层 页面上通过地址栏传值时出现乱码的两种解决方法 ref和out的区别在c#中 总结
- swig编译GDAL的C#库时遇到的代码安全问题及解决方法
- VS2008 C# 检测到无法访问的代码的解决方法
- 用回溯法(backtracking)解决平衡集合问题(一道微软公司面试题)
- C#与.NET程序员面试宝典 3.1.3 面试题22:如何解决装箱和拆箱引发的性能问题
- C#使用读写锁三行代码简单解决多线程并发写入文件时线程同步的问题
- 一道面试题(C#实现了超大整数的加减乘法运算)