描述
用 Golang 实现排列组合数字。
题目
有 1、2、3、4 个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
题目解决思路
可填在百位、十位、个位的数字都是 1、2、3、4。组成所有的排列后再去掉不满足条件的排列。
代码具体实现
package main
import (
"fmt"
)
func main() {
fmt.Println("嗨客网(www.haicoder.net)")
var nums []uint64
for i := 1; i < 5; i++ {
for j := 1; j < 5; j++ {
for k := 1; k < 5; k++ {
if (i != j) && (i != k) && (j != k) {
nums = append(nums, uint64(i*100+j*10+k))
}
}
}
}
fmt.Println("总共:", len(nums))
fmt.Println(nums)
}
程序运行后,控制台输出如下:
我们使用了三重 for 循环,分别遍历,并使用 if 判断如果三个数,都不相等,再将结果追加到切片中,最后获取切片的总长度就是总个数。