給定 n
'>
n 個正整數,將它們分組,使得每組中任意兩個數互質。
至少要分成多少個組?
輸入格式
第一行是乙個正整數 n
'>
n。第二行是 n
'>n
個不大於10000的正整數。
輸出格式
乙個正整數,即最少需要的組數。
資料範圍1≤
n≤10'>1 ≤ n ≤ 1
輸入樣例:
6
14 20 33 117 143 175
輸出樣例:3
#include using namespace std;const int n = 15;
int n, ans = 999;
int a[n];
int group[n][n];
bool book[n];
int q1, q2;
int gcd(int a, int b)
bool check(int i, int x, int cnt)
return true;
}void dfs(int cnt, int x, int group_index, int group_cnt)
// printf("\n");
// for(int i = 0; i < group_index; i++)
// printf("\n");
// }
// printf("-------\n");
if(group_index > ans)return;
if(cnt == n)
int flag = 1;
for(int i = x; i < n; i++)
}if(flag)
// printf("cnt = %d\n",cnt);
dfs(cnt, 0, group_index + 1, 0);
} }int main()
dfs(0,0,0,0);
cout << ans + 1 << endl;
return 0;
}
分成互質組 dfs
分成互質組 檢視 提交 統計 提問 總時間限制 1000ms 記憶體限制 65536kb 描述給定n個正整數,將它們分組,使得每組中任意兩個數互質。至少要分成多少個組?輸入第一行是乙個正整數n。1 n 10。第二行是n個不大於10000的正整數。輸出乙個正整數,即最少需要的組數。樣例輸入 614 2...
7834 分成互質組
總時間限制 1000ms 記憶體限制 65536kb 描述 給定n個正整數,將它們分組,使得每組中任意兩個數互質。至少要分成多少個組?輸入 第一行是乙個正整數n。1 n 10。第二行是n個不大於10000的正整數。輸出 乙個正整數,即最少需要的組數。樣例輸入 6 14 20 33 117 143 1...
AcWing 1118 分成互質組
我用的是狀壓dp。先預處理出可以在一組的集合。然後對每種狀態列舉它的子集進行轉移。像這樣子 for i 1 i 1 f i 表示已經把 i 集合裡的數安頓好了需要幾個組。屬性 min。時間複雜度 o n 2 times 2 n 3 n 其中 o n 2 times 2 n 是預處理的複雜度,o 3 ...