关于用Go做一些OJ时遇到的问题

总体上来说oj还是适合用c/c++来做,因为很多oj对他们输入样例处理很完善,但是对于小众语言Go来说,却不是那么好,或者来说,处理输入的方法有点麻烦;
另外吐槽这种输入输出恶心人的oj网站,也许是最近刷leetcode习惯了不处理输入输出的oj。

  • 在牛客网的OJ输入上,经常出现问题
  1. 多组数据输入,一定处理fmt.Scanln()的返回值,具体处理方式见下:

    ...
    n,err:=fmt.Scanln()
    if n==0||err!=nil{return //或者break等,结束输入
    }
    

    问题来源:多组数据下,明明按照它要求的输入输出实现,但还是遇到0.00%通过的问题;多组数据下,明明按照它要求的输入输出实现,但还是遇到0.00%通过的问题;
    解决:这多半还是Go的输入上造成的,并且Go没有C/C++的EOF控制方式,所以只能通过fmt.Scanln()返回的参数判断,具体看如下代码。

    package main
    import "fmt"
    func main(){n:=0_,_=fmt.Scanln(&n)//一般不太愿意再处理其返回的两个参数for n>0{a:=0for n>2{a+=n/3;n=n%3+n/3if n==2{n++}}fmt.Println(a)b,err:=fmt.Scanln(&n)//该题因为有明确的停止条件,n==0,所以也没处理其返回值,这样本地测试的所有数据都对,但是放到oj上,一个样例也通不过;//无心加上处理,就通过了!!!真想骂牛客网对小语言的输入处理!垃圾!if b==0||err!=nil{break}}
    }
    
  2. 一行输入中含有多个数据,即有多个空格分割的输入
    这也是Go的输入不像C scanf函数返回EOF结束的处理方式,会造成处理上的麻烦,如下解决方法

    import "bufio"
    ...
    reader:=bufio.NewReader(os.Stdin)
    n,err:=reader.ReadString("\n")
    if n==0||err!=nil{return
    }
    bytes, _, _ := reader.ReadLine() //处理多行时,注意一下返回值的处理
    str := string(bytes)
    fmt.Println(bytes)
    fmt.Println(str)
    

关于用Go做一些OJ时遇到的问题相关推荐

  1. redis cluster 设置密码做集群时gem下client.rb文件修改

    redis cluster 设置密码做集群时gem下client.rb文件修改 来源 https://www.cnblogs.com/shihaiming/p/5949772.html redis节点 ...

  2. 使用java做paypal开发时购买东西支付不成功的原因

    使用java做paypal开发时购买东西支付不成功的原因 没有设置网站习惯设定,登陆自己的paypal账户,在网站习惯设定上填写回调的url路径,这样就可以 支付成功了并且异步修改订单的状态. 支付成 ...

  3. CMap在用CString做key类型时,ARG_KEY要选LPCTSTR

    CMap在用CString做key类型时,ARG_KEY要选LPCTSTR  文章来源:http://blog.csdn.net/flyingxu/archive/2005/12/26/562852. ...

  4. 做算法题时的一些小技巧

    做算法题时的一些小技巧 技巧一: 在用C++做算法题时,我们会觉的cin,cout比scanf,printf使用起来更加的方便,不用指定输入输出格式. 但是cin,cout的运行时间比scanf,pr ...

  5. 老板说“我们要做个性化推荐”时,你该怎么办......

    PMCAFF(www.pmcaff.com):互联网产品社区,是百度,腾讯,阿里等产品经理的学习交流平台.定期出品深度产品观察,互联产品研究首选. 外包大师(www.waibaodashi.com): ...

  6. 做Mysql主从时,注意使用replicate_wild_do_table和replicate-wild-ignore-table

    做Mysql主从时,注意使用replicate_wild_do_table和replicate-wild-ignore-table 浓缩版: 使用replicate_do_db和replicate_i ...

  7. 【报错笔记】在做struts项目时,所有项目代码没问题但就是报404错误。

    在做struts项目时,所有项目代码没问题但就是报404错误,而且tomcat一次只能运行一个项目,做第二个得关闭tomcat,清空再开启运行. 我重新下载了tomcat9还是那样,可能是eclips ...

  8. 【报错笔记】在eclipse中做Spring项目时,创建Spring容器时老是出错

    在eclipse中做Spring项目时,创建Spring容器时老是出错 写完这句代码无法导包,最后发现包导错了,我原来导的4.3.9的包,而且是后缀为其他的包,而且对JDK也有要求,我又下载了5.0. ...

  9. 头部ct能检查出什么_【安全用药】做CT检查时应注意什么?

    点击蓝字 关注我们 安安 徽徽,你知道做CT检查时应注意什么? 上腹部CT检查前患者至少禁食6小时.检查前15分钟喝温开水充盈胃部.CT检查时,患者会受到一定量X射线辐射,应避免过度扫描......本 ...

最新文章

  1. sbt+Scala IDE建立Scala项目
  2. 平滑动画 每秒60帧 -- 16ms内绘完一帧
  3. SAP ABAP OData uri type为metadata的请求处理逻辑
  4. win32 汇编基础概念整理
  5. php api查询开发,PHP开发API接口(注册、登录、查询用户信息)的实例代码
  6. 虚拟化基础架构Windows 2008篇之2-域用户与域用户组管理
  7. 应届生想要获取web前端开发岗位?这份技能攻略,面试攻略别错过
  8. springboot 2.0 Redis command timed out的解决
  9. (转)UIPageControl使亮点直接跳到点击dot上
  10. 【BZOJ2296】随机种子(构造)
  11. android中页面跳转以及数据在Activity之间的传递
  12. 服务器如何取得系统管理员权限,技巧:Windows系统如何获得管理员权限?
  13. matlab正弦波占空比怎么调,matlab实现可调节占空比的方波
  14. 凉宫春日的忧郁第二章
  15. QQ公众号微信公众号,左右互搏?
  16. TOC制约理论的本质及其在生产、项…
  17. 如何区分b ,B,KB,MB,GB?
  18. SR(稀疏表示)人脸识别
  19. 怎么在微信公众号文章里添加附件(如word、excel、pdf等)
  20. 培训c语言程序,编程人员培训手册C语言程序设计基础

热门文章

  1. 小鱼儿CTO赵兴国:基于阿里云的互联网+视频会议系统实践
  2. 华为v8 android 8,华为荣耀8和v8哪个好 华为荣耀8和v8区别对比【详解】
  3. 5V升压12.6V芯片
  4. Chrome 缓存文件路径在哪
  5. python 预编译_python 预编译
  6. HashMap的底层结构、原理、扩容机制
  7. 开发笔记:解决安卓GestureOverlayView手势和ListView点击事件、文本框获取焦点冲突的问题
  8. Speedoffice(word)里面怎样输入空白下划线
  9. 电脑的二进制、八进制、十进制、十六进制转换
  10. 利用API实现全国失信名单查询