华为 笔试 4.24 第二题:这一题只通过了36%why

package main

import (

"fmt"

"strconv"

"strings"

)

func main() {

//总数

//连续进球数

//第一次射球失败

//队员编号

m, n := 0, 0

fmt.Scan(&m, &n)

if n == 0 {

for i := 1; i <= m-1; i++ {

fmt.Printf("%v ", i)

}

fmt.Printf("%v", m)

return

}

if m == 0 {

fmt.Printf("%v", m)

return

}

if m == 1 {

fmt.Printf("%v", m)

return

}

strs := [][]string{}

lala := []string{"1", "2"}

strs = append(strs, lala)

lala2 := []string{}

for i := 0; i < m; i++ {

temp := ""

fmt.Scan(&temp)

lala2 = append(lala2, temp)

}

strs = append(strs, lala2)

// reader := bufio.NewReader(os.Stdin)

// for {

// line, err := reader.ReadString('\n')

// if err != nil {

// break

// }

// line = strings.TrimSpace(line)

// numstr := strings.Split(line, " ")

// strs = append(strs, numstr)

// }

// fmt.Printf("strs: %v\n", strs)

// m, _ := strconv.Atoi(strs[0][0])

// n, _ := strconv.Atoi(strs[0][1])

//队员编号 进球数量

map1 := make(map[int]int)

for i := 0; i < len(strs[1]); i++ {

count := 0

for j := 0; j < n; j++ {

if strs[1][i][j] == '1' {

count++

}

}

map1[i+1] = count

}

//连续中球数量

map2 := make(map[int]int)

for i := 0; i < len(strs[1]); i++ {

count := 0

for j := 0; j < n; j++ {

if strs[1][i][j] == '1' {

count++

v, ok := map2[i+1]

if !ok {

map2[i+1] = count

} else {

if count > v {

map2[i+1] = count

}

}

} else {

count = 0

}

}

}

// fmt.Printf("map2: %v\n", map2)

res := [][]int{}

for i := 1; i <= m; i++ {

temp := []int{}

temp = append(temp, i)

temp = append(temp, map1[i])

temp = append(temp, map2[i])

res = append(res, temp)

}

resstr := []string{}

for i := 0; i < m; i++ {

str1 := ""

temps := strs[1][i]

for j := 0; j < len(res[i]); j++ {

kk := strconv.Itoa(res[i][j])

str1 = str1 + kk

if j == 0 {

str1 = str1 + "*"

}

}

str1 = str1 + temps

// str1 = str1 + "*"

// kk2 := strconv.Itoa(res[i][0])

// str1 = str1 + kk2

resstr = append(resstr, str1)

}

for i := 0; i < len(resstr)-1; i++ {

for j := 0; j < len(resstr)-1; j++ {

zhoadaolej := strings.Split(resstr[j], "*")

zhoadaolej1 := strings.Split(resstr[j+1], "*")

if zhoadaolej[1] < zhoadaolej1[1] {

resstr[j], resstr[j+1] = resstr[j+1], resstr[j]

}

}

}

// fmt.Printf("resstr: %v\n", resstr)

// fmt.Printf("resstr: %v\n", resstr)

for i := 0; i < len(resstr)-1; i++ {

lalala := strings.Split(resstr[i], "*")

jieguo, _ := strconv.Atoi(lalala[0])

fmt.Printf("%v ", jieguo)

}

//前三个规则是谁大谁在前 后一个规则是谁小谁在前

lalala := strings.Split(resstr[len(resstr)-1], "*")

jieguo, _ := strconv.Atoi(lalala[0])

fmt.Printf("%v", jieguo)

}

// 4 5

// 11100 00111 10111 01111

// 11 4

// 0110 1101 0111 0110 1101 0111 0110 1101 0111 0110 1101

// 10 1

// 0 1 1 1 1 0 0 0 0 0 1

全部评论
我的第二题,LZ可以参考一下
1
送花
回复
分享
发布于 04-24 21:49 北京
同36感觉没问题啊😅
点赞
送花
回复
分享
发布于 04-24 21:36 江苏
滴滴
校招火热招聘中
官网直投
lz可以看py吗?我用py写的100过
点赞
送花
回复
分享
发布于 04-28 21:39 湖北
我这边设计了一些用例,可以提交测试看看,https://hydro.ac/d/HWOCR/p/OCR035
点赞
送花
回复
分享
发布于 05-05 13:02 安徽

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务