/* 排列(Permutation) 用1,2,3,...,9组成3个三位数abc,def和ghi,每个数字恰好使用一次,要求abc:def:ghi = 1:2:3。 按照"abc def ghi"的格式输出所有解。每行一个解。提示:不必太动脑筋。 分析: 全排列 对于next_permutation函数,其函数原型为: #include <algorithm> bool next_permutation(iterator start,iterator end) 当前序列不存在下一个排列时,函数返回false,否则返回true 此外,next_permutation(node,node+n,cmp)可以对结构体num按照自定义的排序方式cmp进行排序。 */ #include <iostream> #include <algorithm> using namespace std; int main() { int nums[9] = {1,2,3,4,5,6,7,8,9}; int abc,def,ghi; do{ abc = nums[0]*100 + nums[1]*10 + nums[2]; def = nums[3]*100 + nums[4]*10 + nums[5]; ghi = nums[6]*100 + nums[7]*10 + nums[8]; if((ghi == 3*abc) && (def == 2*abc)){ printf("%d%d%d %d%d%d %d%d%d ", nums[0], nums[1], nums[2], nums[3], nums[4], nums[5], nums[6], nums[7], nums[8]); } }while(next_permutation( nums, nums + 9)); return 0; }
【参考文献】
1.刘汝佳.算法竞赛入门经典