我同窗在旁邊作者道題,我也看了一下ios
真的好水難spa
一看這道題,直接搜索code
剪枝是不可能剪枝的一生不可能get
#include <cstdio> #include <iostream> #include <algorithm> using namespace std; const long long MAXN = 105; long long n; long long a[MAXN],b[MAXN]; bool sign = false; bool flag[MAXN]; void dfs(long long now){ if (now == n){ for (int i = 1 ; i <= n ; i++){ printf("%lld ",b[i]); } sign = true; return ; } if (sign == true) return ; for (int i = 1 ; i <= n ; i++){ if (flag[i] == true) continue; if(flag[i] == false){ if (b[now] * 2 == a[i] || (a[i] * 3 == b[now])){ //因爲要當p[i] % 3 = 0 時 b[now + 1] = a[i]; flag[i] = true; dfs(now + 1); flag[i] = false; } } } return ; } int main(){ scanf("%lld",&n); for (int i = 1 ; i <= n ; i++) scanf("%lld",&a[i]); for (int i = 1 ; i <= n ; i++){ flag[i] = true; b[1] = a[i]; dfs(1); flag[i] = false; } return 0; }