和找单词做了类似的处理,总之还是套模板。
#include<stdio.h> #include<string.h> #include<stdlib.h> int main() { int t,n,k,a[10],b[12]; int c1[1000],c2[1000]; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&k); for(int i=1;i<=k;i++) { scanf("%d%d",&a[i],&b[i]); } memset(c1,0,sizeof(c1)); memset(c2,0,sizeof(c2)); c1[0]=1; for(int i=1;i<=k;i++) { for(int j=0;j<=n;j++) { for(int k=0;j+k<=n&&k<=a[i]*b[i];k+=a[i]) { c2[j+k]+=c1[j]; } } for(int i=0;i<=n;i++) { c1[i]=c2[i]; c2[i]=0; } } printf("%d\n",c1[n]); } // system("pause"); return 0; }