Golang OJ 输入输出

241 阅读1分钟

Golang OJ 输入输出

定义

  • m,n为可定
  • x,y为不确定

需要使用的包

  • fmt -> 输出
  • bufio -> IO
  • os -> 接受输入
  • strconv -> string转换
  • strings -> string处理

常用元素

fmt.Println() ,fmt.Printf() 输出结果

bufio.NewScanner(os.Stdin) 接受来自os.Stdin的输入

bufio.ScanWords 这个对象配合bufio.Split()方法可以实现单个元素扫描,看sln5

strconv.Atoi(string) ,string转int,转int32要用stronv.ParseInt(string,10,32),输出的是int64,建议统一用int64,stronv.ParseInt(string,10,64)

strings.Split(string," ") ,把string按照“ ” 分割,注意后面的" " 有空格

单个元素

// 输入单个数字也可以用sln2 + strconv.Atoi(m)
func sln1() {
   var m int
   fmt.Scanln(&m)
   fmt.Println(m)
}

// 输入单个str
func sln2() {
   input := bufio.NewScanner(os.Stdin)
   input.Scan()
   m := input.Text()
   fmt.Println(m)
}

一维数组

// 输入n个数字
func sln3() {
   var n int
   fmt.Scan(&n)
   arr := make([]int, n)
   for i, _ := range arr {
      fmt.Scan(&arr[i])
   }
   fmt.Println(arr)
}

// 输入x 个数字
func sln4() {
   input := bufio.NewScanner(os.Stdin)
   bs := make([]byte, 2000*1024)

   input.Buffer(bs, len(bs))
   input.Scan()
   strs := strings.Split(input.Text(), " ")
   arr := make([]int, len(strs))
   for i, str := range strs {
      arr[i], _ = strconv.Atoi(str)
   }

   fmt.Println(arr)
}

二维数组

// 输入n * m 个数字
func sln5() {
   input := bufio.NewScanner(os.Stdin)
   bs := make([]byte, 2000*1024)
   input.Buffer(bs, len(bs))
   var m, n int
   input.Split(bufio.ScanWords)
   input.Scan()
   n, _ = strconv.Atoi(input.Text())
   input.Scan()
   m, _ = strconv.Atoi(input.Text())
   arrs := make([][]int, n)
   for i := range arrs {
      arrs[i] = make([]int, m)
   }
   for i := 0; i < n; i++ {
      for j := 0; j < m; j++ {
         input.Scan()
         arrs[i][j], _ = strconv.Atoi(input.Text())
      }
   }

   for _, arr := range arrs {
      fmt.Println(arr)
   }
}

// 输入 不定长度的 二维数组
func sln6() {
   input := bufio.NewScanner(os.Stdin)
   bs := make([]byte, 2000*1024)
   input.Buffer(bs, len(bs))
   arrs := make([][]int, 0)
   for input.Scan() {
      arr := make([]int, 0)
      strs := strings.Split(input.Text(), " ")
      if strs[0] == "" {
         break
      }
      for _, v := range strs {
         num, _ := strconv.Atoi(v)
         arr = append(arr, num)
      }
      arrs = append(arrs, arr)
   }

   fmt.Println(arrs)
}