华为 笔试 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