總時間限制: 1000ms 記憶體限制: 65536kb
描述 給定n個正整數,將它們分組,使得每組中任意兩個數互質。至少要分成多少個組?
輸入 第一行是乙個正整數n。1 <= n <= 10。
第二行是n個不大於10000的正整數。
輸出 乙個正整數,即最少需要的組數。
樣例輸入
6 14 20 33 117 143 175
樣例輸出
3 這題感覺自己寫起來有些難度,參考了一些大神的解題方法。
#include
using
namespace
std;
int n,a[11],p[11],i,s;
int g(int a,int b)
void fin(int x)
; if(x>n)return ;
else
}if(f==1) }}
if(p[x]==0) p[x]=++s;
if(x<=n) fin(x+1);
else
return ;
}}int main()
這篇寫的很好 OpenJudge 7834 分成互質組
本題由2008年第十三屆 華羅庚金盃 少年數學邀請賽 決賽第5題改編而成。一道簡簡單單的搜尋題,老師卻要我們用狀壓dp再做。毒瘤!設f x 表示狀態x下最少分成的組數。其中x為10位二進位制數,表示方法如下 若x 0000001101,表示第0 1 第2 3 第3 4 個數 0 2 3位為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 ...
分成互質組 dfs
分成互質組 檢視 提交 統計 提問 總時間限制 1000ms 記憶體限制 65536kb 描述給定n個正整數,將它們分組,使得每組中任意兩個數互質。至少要分成多少個組?輸入第一行是乙個正整數n。1 n 10。第二行是n個不大於10000的正整數。輸出乙個正整數,即最少需要的組數。樣例輸入 614 2...