电话号码对应所有英文

package main

import (
	"fmt"
)

var c = []string{"ABC", "DEF", "GHI", "JKL", "MNO", "PQR", "STU", "VWX", "YZ"}
var total = []int{3, 3, 3, 3, 3, 3, 3, 3, 2}

//求所有电话号码对应的单词
func number_to_charset(numbers []int, answer []int) {
	len1 := len(numbers)
	for {
		for i := 0; i < len1; i++ {
			fmt.Printf("%s", string(c[numbers[i]-1][answer[i]]))
		}
		fmt.Printf("\n")

		k := len1 - 1 //探索与回溯
		//总是从最后一位改起(如AWA AWB AWC),回溯的时候只改变一位(AXA AXB AXC)
		for k >= 0 {
			if answer[k] < total[numbers[k]-1]-1 {
				answer[k]++
				break
			} else {
				answer[k] = 0
				k--
			}

		}

		if k < 0 {
			break
		}

	}
}

func main() {
	answer := make([]int, 9)
	numbers := []int{2, 9, 2}

	number_to_charset(numbers, answer)
}

输出结果:

    DYD
	DYE
	DYF
	DZD
	DZE
	DZF
	EYD
	EYE
	EYF
	EZD
	EZE
	EZF
	FYD
	FYE
	FYF
	FZD
	FZE
	FZF


你可能感兴趣的:(电话号码对应所有英文)