题目描述
习题2-6 排列(permutation)
用1,2,3…9,组成3个三位数abc,def和ghi,每个数字恰好使用一次,要求abc:def:ghi=1:2:3。按照“abc def ghi”的格式输出所有解,每行一个解。提示:不必太动脑筋。
思路
全排列,在排列的过程中判断这个数是否合理
具体代码
#include <iostream>
using namespace std;
int path[10];
bool st[10];
int merge(int l, int r) {
int res = 0;
for (int i = l; i <= r; i ++ )
res = res * 10 + path[i];
return res;
}
void dfs(int u) {
if (u == 9 + 1) {
int a = merge(1, 3);
int b = merge(4, 6);
int c = merge(7, 9);
if (b == 2 * a && c == 3 * a) printf("%d %d %d\n", a, b, c);
}
for (int i = 1; i <= 9; i ++ )
if (!st[i]) {
path[u] = i;
st[i] = true;
dfs(u + 1);
st[i] = false;
}
}
int main() {
dfs(1);
return 0;
}