标签:测试 就会 http 解决 class mile 测试数据 color sort
前言:最近参加了几场实习生笔试,编程题全军覆没,但是本地明明就是对的啊!!今天花了一早上,终于弄明白是怎么回事了,和我有同样情况的童鞋可以参考,也许可以解决你的困惑!
重点:我一直理解错的地方就是,我以为是给我一项(一项表示一次用例的所有数据)数据,我输出一项结果就可以。然而并不是这样!很多题目是一次性给你多项数据,也就是说要求是:一次性给你所有的测试数据,你依次把你的结果全部输出来。举个例子:
下面是塞码网上京东2016的一道真题(题目可以不用认真看,看输入的地方)
假设我定义第一行输入为n,第二行为arr,我以前都是这样写的(错误的写法):
于是结果就是不对,反正怎么调都不对!我们必须这样写(正确的写法):
也就是必须用循环来读取输入,且主要代码必须在循环里,否则系统无论给多少项数据,按错误的写法永远只会有一个输出。这个输出对于第一项数据来说是对的,但系统想要的应该是多项输出,所以就会被判为错误。
上面京东的题目,大家可以去试一试,http://exercise.acmcoder.com/quesexcuse?paperId=176中的第26题。
错误的代码:
var n=parseInt(read_line()); var arr =str.split(" "); fun(n,arr); //以下代码不变 function fun(n,arr){ var dong = arr[0]; var count=0; arr.sort(function(a,b){return a-b;}); var index = arr.indexOf(dong); while(index<n-1){ arr[n-1]--; dong++; arr[index]=dong; count++; arr.sort(function(a,b){return a-b}); index =arr.indexOf(dong); } print(count); }结果如下:
可以看出,系统给了我很多项数据,我的输出只有一个(其实这个输出结果和刚刚题目上第一个例子的结果是一样的,说明我思路没错),所以判定错误。
正确的代码:
var n; while(n=parseInt(read_line())){ var arr = read_line().split(‘ ‘); fun(n,arr); } //以下代码不变 function fun(n,arr){ var dong = arr[0]; var count=0; arr.sort(function(a,b){return a-b;}); var index = arr.indexOf(dong); while(index<n-1){ arr[n-1]--; dong++; arr[index]=dong; count++; arr.sort(function(a,b){return a-b}); index =arr.indexOf(dong); } print(count); }结果如下:
只改变了输入的方式,结果就对了!
苍天啊,我终于弄明白了,简直想哭,那么多笔试全部掉坑里了。如果你和我遇到一样的情况,希望对你有所帮助!
标签:测试 就会 http 解决 class mile 测试数据 color sort
原文地址:http://www.cnblogs.com/youhong/p/6661664.html