golang 算法课 排列组合模板

func ans(num, cond, sum int,str string) {
	if num == sum {
		fmt.Println(str)
		return
	}
	if num < cond{
		if condition('a', str, 4){
			ans(num+1, cond,sum, str+ "a")
		}

		if condition('b', str, 4){
			ans(num+1,cond, sum, str+ "b")
		}

		if condition('c', str, 4){
			ans(num+1,cond, sum, str+ "c")
		}
	}else{
		if condition('1', str, 2){
			ans(num+1, cond,sum, str+ "1")
		}

		if condition('2', str, 2){
			ans(num+1,cond, sum, str+ "2")
		}

		if condition('3', str, 2){
			ans(num+1,cond, sum, str+ "3")
		}
	}

}

func condition(b byte , str string, threshold int) bool{
	count := 0
	for i := range str{
		if str[i] == b{
			count++
		}
	}

	if count >= threshold{
		return false
	}
	return true
}

func main(){
	ans(0, 7,10, "")
}

你可能感兴趣的:(学习笔记)