parent
687db3d3a4
commit
bee5ef9913
@ -1 +1,34 @@ |
|||||||
package cap3 |
package cap3 |
||||||
|
|
||||||
|
// Work10 狼找兔子,返回兔子是否有幸免的机会,有则返回可能的洞穴
|
||||||
|
func Work10(m, n int) (bool, []int) { |
||||||
|
gcd := func(m, n int) int { |
||||||
|
a, b := m, n |
||||||
|
if m < n { |
||||||
|
a, b = n, m |
||||||
|
} |
||||||
|
|
||||||
|
r := a % b |
||||||
|
for r != 0 { |
||||||
|
a = b |
||||||
|
b = r |
||||||
|
r = a % b |
||||||
|
} |
||||||
|
|
||||||
|
return b |
||||||
|
} |
||||||
|
|
||||||
|
r := gcd(m, n) |
||||||
|
if r == 1 { |
||||||
|
return false, nil |
||||||
|
} |
||||||
|
|
||||||
|
safeHoles := make([]int, 0) |
||||||
|
for i := 0; i < n; i++ { |
||||||
|
if i%r != 0 { |
||||||
|
safeHoles = append(safeHoles, i) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
return true, safeHoles |
||||||
|
} |
||||||
|
@ -1 +1,13 @@ |
|||||||
package cap3 |
package cap3 |
||||||
|
|
||||||
|
// Work11 求n!结果中0的数量
|
||||||
|
func Work11(n int) int { |
||||||
|
count := 0 |
||||||
|
for i := 1; i <= n; i++ { |
||||||
|
for num := i; num%5 == 0; num /= 5 { |
||||||
|
count++ |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
return count |
||||||
|
} |
||||||
|
@ -1 +1,24 @@ |
|||||||
package cap3 |
package cap3 |
||||||
|
|
||||||
|
func Work12() []int { |
||||||
|
size := 52 |
||||||
|
cardStatus := make([]bool, 52) |
||||||
|
start, count := 2, 0 |
||||||
|
for count <= 104 { |
||||||
|
for j := start; j < size; j++ { |
||||||
|
if j%start == 0 { |
||||||
|
cardStatus[j] = !cardStatus[j] |
||||||
|
count++ |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
result := make([]int, 0) |
||||||
|
for i, faceDown := range cardStatus { |
||||||
|
if !faceDown { |
||||||
|
result = append(result, i) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
return result |
||||||
|
} |
||||||
|
@ -1 +1,6 @@ |
|||||||
package cap3 |
package cap3 |
||||||
|
|
||||||
|
//func Work13() map[string]int {
|
||||||
|
// students := []string{"A", "B", "C", "D", "E"}
|
||||||
|
//
|
||||||
|
//}
|
||||||
|
@ -1 +1,96 @@ |
|||||||
package cap3 |
package cap3 |
||||||
|
|
||||||
|
import ( |
||||||
|
"fmt" |
||||||
|
"strings" |
||||||
|
) |
||||||
|
|
||||||
|
//
|
||||||
|
//func Work6(input string) string {
|
||||||
|
//
|
||||||
|
//}
|
||||||
|
|
||||||
|
var before bool = false |
||||||
|
|
||||||
|
func printString(str string) { |
||||||
|
temp := "" |
||||||
|
for i := 0; i < len(str); i++ { |
||||||
|
if i == 0 { |
||||||
|
before = false |
||||||
|
} else { |
||||||
|
if str[i-1] == '*' || str[i-1] == '/' { |
||||||
|
before = true |
||||||
|
} else { |
||||||
|
before = false |
||||||
|
} |
||||||
|
} |
||||||
|
if str[i] == '(' { |
||||||
|
temp = getString(str[i:]) |
||||||
|
if i == 0 { |
||||||
|
str = temp |
||||||
|
} else { |
||||||
|
str = str[:i] + temp |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
fmt.Println(str) |
||||||
|
} |
||||||
|
|
||||||
|
func getString(str string) string { |
||||||
|
result := str |
||||||
|
temp := "" |
||||||
|
i := 0 |
||||||
|
length := 0 |
||||||
|
add := false |
||||||
|
for i = 1; i < len(str); { |
||||||
|
if str[i] == '+' || str[i] == '-' { |
||||||
|
add = true |
||||||
|
} |
||||||
|
if str[i] == '(' { |
||||||
|
temp = getString(str[i:]) |
||||||
|
length = len(temp) + len(str[:i]) |
||||||
|
str = str[:i] + temp |
||||||
|
if length != len(result) { |
||||||
|
if i > 1 { |
||||||
|
i-- |
||||||
|
} |
||||||
|
} else { |
||||||
|
i = strings.Index(str, ")") + 1 |
||||||
|
} |
||||||
|
result = str |
||||||
|
continue |
||||||
|
} |
||||||
|
if str[i] == ')' { |
||||||
|
break |
||||||
|
} |
||||||
|
i++ |
||||||
|
} |
||||||
|
result = str |
||||||
|
if before { |
||||||
|
return result |
||||||
|
} |
||||||
|
if !add { |
||||||
|
if i+1 < len(str) { |
||||||
|
str = str[1:] |
||||||
|
temp = str |
||||||
|
result = str[:i-1] + temp[i:] |
||||||
|
} else if i+1 == len(str) { |
||||||
|
str = str[1:] |
||||||
|
temp = str |
||||||
|
result = str[:i-1] + temp[i:] |
||||||
|
} |
||||||
|
} else { |
||||||
|
if i+1 < len(str) { |
||||||
|
if str[i+1] != '*' && str[i+1] != '/' { |
||||||
|
str = str[1:] |
||||||
|
temp = str |
||||||
|
result = str[:i-1] + temp[i:] |
||||||
|
} |
||||||
|
} else if i+1 == len(str) { |
||||||
|
str = str[1:] |
||||||
|
temp = str |
||||||
|
result = str[:i-1] + temp[i:] |
||||||
|
} |
||||||
|
} |
||||||
|
return result |
||||||
|
} |
||||||
|
@ -1 +1,18 @@ |
|||||||
package cap3 |
package cap3 |
||||||
|
|
||||||
|
func Work7(m, n int) int { |
||||||
|
var ack func(m, n int) int |
||||||
|
ack = func(m, n int) int { |
||||||
|
if m == 0 { |
||||||
|
return n + 1 |
||||||
|
} |
||||||
|
|
||||||
|
if n == 0 { |
||||||
|
return ack(m-1, 1) |
||||||
|
} |
||||||
|
|
||||||
|
return ack(m-1, ack(m, n-1)) |
||||||
|
} |
||||||
|
|
||||||
|
return ack(m, n) |
||||||
|
} |
||||||
|
@ -1 +1,12 @@ |
|||||||
package cap3 |
package cap3 |
||||||
|
|
||||||
|
func Work8(input string) bool { |
||||||
|
length := len(input) |
||||||
|
for i := 0; i < length/2; i++ { |
||||||
|
if input[i] != input[length-1-i] { |
||||||
|
return false |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
return true |
||||||
|
} |
||||||
|
@ -1 +1,28 @@ |
|||||||
package cap3 |
package cap3 |
||||||
|
|
||||||
|
// Work9 蚂蚁爬房,求a~b路线数,动规解法,时间O(n),空间O(1)
|
||||||
|
func Work9(a, b int) int { |
||||||
|
if a > b { |
||||||
|
return 0 |
||||||
|
} |
||||||
|
|
||||||
|
length := b - a |
||||||
|
if length <= 2 { |
||||||
|
return 1 |
||||||
|
} |
||||||
|
|
||||||
|
// 从a开始到后两个房间路线分别有一个和两种路线
|
||||||
|
//a+1:(a->a+1),a+2:(a->a+1->a+2, a->a+2)
|
||||||
|
prev, prev2 := 1, 2 |
||||||
|
step := 0 |
||||||
|
// 前两步已经走过了,所以len-2
|
||||||
|
for i := 0; i < length-2; i++ { |
||||||
|
step = prev + prev2 |
||||||
|
|
||||||
|
// 上两个变成上一个,上一个变成下一个
|
||||||
|
prev2 = prev |
||||||
|
prev = step |
||||||
|
} |
||||||
|
|
||||||
|
return step |
||||||
|
} |
||||||
|
Loading…
Reference in new issue