MyException - 我的异常网
当前位置:我的异常网» Perl/Python » 算法学习(7)

算法学习(7)

www.MyException.Cn  网友分享于:2013-08-22  浏览:0次
算法学习(七)

1.Bulls and Cows

说明:这是两个人的游戏,通常是用纸和笔进行的。现代版也被称为“策划者”。

第一个玩家,爱丽丝,选择一个四位数的密码(1492),所有的数字都不一样。

第二个玩家,芭芭拉,尝试猜测个密码。她可以提供任何4位数的组合(不需要重复)——而且每次尝试,爱丽丝都应该给出一个提示。

这个提示由两个值组成:

第一个数告诉我们正确猜出了多少位数字,并在正确的位置上;

第二种方法是正确地猜出有多少位数字,但在错误的位置。

例如,如果这个秘密值是1492,芭芭拉的猜测是2013,那么爱丽丝应该用0-2来提示。

如果猜测是1865,那么提示将是1-0。

这个游戏也可以用4个字母的单词来玩,但在这种情况下,它可能需要语言的知识。

问题陈述:你的目标是写一个程序来计算这些值,并由猜测值返回提示。

例子:

input data:
1492 5
2013 1865 1234 4321 7491

answer:
0-2 1-0 1-2 0-3 2-1

Input data 将包含第一行的秘密值和猜测值的数量。

第二行包含指定数量的猜测。

Answer 答案应该包含这些猜测的提示,它们应该以x-y格式给出,并与空格分隔。

Test data:

0197 11
1796 0869 2140 9210 9624 6417 7208 4867 8902 8971 2164

代码如下:

 1 data1 = input().split()
 2 correct_num = list(data1[0])  # 秘密数值,转化为列表形式
 3 guess_nums = int(data1[1])   # 猜测值数量
 4 data2 = input().split()
 5 
 6 for n in data2:
 7     guess = list(n)
 8     first = 0
 9     two = 0
10     for m in range(4):
11         if guess[m] == correct_num[m]:  # 比较有多少猜对的数,在正确的位置上
12             first += 1
13         elif guess[m] in correct_num:   # 有多少位猜对的数
14             two += 1
15     print('{}-{}'.format(first, two), end=' ')
16 
17 输出: 1-2 1-1 1-1 0-3 0-1 1-1 0-2 1-0 0-2 0-3 1-0 

 

2.Two Printers(两个打印机的问题)

说明:现在有了一个商业协议——需要打印一份包含N页的文件。

有两台打印机,但看起来打印机的工作速度是不同的。一个在X秒内打印完成一页,另一个在Y秒内完成一页。

现在的问题是求出可以花最少的时间用两台打印机打印整个文档。

例子:

input data:
2
1 1 5
3 5 4

answer:
3 9

Input data 第一行中包含测试用例数。

然后,测试用例每一个都在单独的行中。

每个测试用例包含三个整数值——X Y N,其中N不会超过10亿。

Answer 应该包含每个测试用例的打印时间,由空格分隔。

分析:应该把打印一页的不同时间,转化为相同时间打印多少页

输入数据:

16
397 198 799028
5 13 64495601
11 2 69516005
338 900 972621
67 62 7644114
886 73 974401
124 9 6394340
20 33 15282074
1 1 618615655
82 56 9300869
1248 427 524338
1005 2674 98192
121 66 6071269
786 486 601058
1283455 473995 269
97484 57402 6470

代码如下:

 1 test_cases = int(input())  # 测试用例数量
 2 for i in range(test_cases):
 3     testcase = input().split()
 4     X = int(testcase[0])
 5     Y = int(testcase[1])
 6     N = int(testcase[2])
 7     time = N / (1 / X + 1 / Y)   # 转化为1秒钟可以打印多少x和y,求出大概时间
 8     numX = (time // X) + 1    # 讨论打印最后一页的问题,X多打一页
 9     numY = (time // Y) + 1    # Y多打一页
10     Ans = round(min(numX*X, numY*Y))  # 取X,Y多打一个时,它们两个值的最小值,就是一起打印所需的最小时间
11     print(Ans, end=' ')
12 
13 输出:105560334 232900785 117642472 238991400 246152338 65716717 53654769 190305080 309307828 309489812 166816517 71725845 259278921 180504774 93377015 233766632

 

文章评论

程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
程序员必看的十大电影
程序员必看的十大电影
老程序员的下场
老程序员的下场
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
漫画:程序员的工作
漫画:程序员的工作
程序员应该关注的一些事儿
程序员应该关注的一些事儿
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
编程语言是女人
编程语言是女人
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
程序员都该阅读的书
程序员都该阅读的书
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
程序员的鄙视链
程序员的鄙视链
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
我是如何打败拖延症的
我是如何打败拖延症的
我的丈夫是个程序员
我的丈夫是个程序员
总结2014中国互联网十大段子
总结2014中国互联网十大段子
如何成为一名黑客
如何成为一名黑客
那些争议最大的编程观点
那些争议最大的编程观点
旅行,写作,编程
旅行,写作,编程
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
为什么程序员都是夜猫子
为什么程序员都是夜猫子
2013年中国软件开发者薪资调查报告
2013年中国软件开发者薪资调查报告
Web开发者需具备的8个好习惯
Web开发者需具备的8个好习惯
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
 程序员的样子
程序员的样子
程序员和编码员之间的区别
程序员和编码员之间的区别
团队中“技术大拿”并非越多越好
团队中“技术大拿”并非越多越好
Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
鲜为人知的编程真相
鲜为人知的编程真相
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
Java程序员必看电影
Java程序员必看电影
聊聊HTTPS和SSL/TLS协议
聊聊HTTPS和SSL/TLS协议
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
代码女神横空出世
代码女神横空出世
10个调试和排错的小建议
10个调试和排错的小建议
每天工作4小时的程序员
每天工作4小时的程序员
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
“肮脏的”IT工作排行榜
“肮脏的”IT工作排行榜
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
中美印日四国程序员比较
中美印日四国程序员比较
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有