http://acm.hdu.edu.cn/showproblem.php?pid=2069

原来学百钱买百鸡是写的代码超时。看到一个大牛的也是用的暴力不过比我原来的写法要好很多!一下ac 了!

有用母函数过的,不过我对母函数理解还不深,看不太懂!

用的是二维的数组,写的母函数。

牛人这样提示:

  1. int c1[250][100], c2[250][100];
  2. 状态转移为:
  3. int x = l + j/step[i];
  4. c1[j+k][x] += c2[k][l];

 

下面是暴力代码:

Problem : 2069 ( Coin Change )     Judge Status : Accepted
RunId : 3065001    Language : G++    Author : rll
Code Render Status : Rendered By HDOJ G++ Code Render Version 0.01 Beta

 

代码
1 #include<stdio.h>
2 #include<string.h>
3
4  int main()
5 {
6 int n,i,j,k,m,cent,a[6]={1,5,10,25,50},c[252];
7 memset(c,0,sizeof(c));
8 for(i=0;i<101&&a[0]<251;i++)
9 for(j=0;i+j<101&&a[0]*i+a[1]*j<251;j++)
10 for(k=0;i+j+k<101&&a[0]*i+a[1]*j+a[2]*k<251;k++)
11 for(m=0;i+j+k+m<101&&a[0]*i+a[1]*j+a[2]*k+a[3]*m<251;m++)
12 for(n=0;i+j+k+m+n<101&&a[0]*i+a[1]*j+a[2]*k+a[3]*m+a[4]*n<251;n++)
13 c[a[0]*i+a[1]*j+a[2]*k+a[3]*m+a[4]*n]+=1;
14
15 while(scanf("%d",¢)!=EOF)
16 {
17 printf("%d\n",c[cent]);
18
19 }
20 return 0;
21 }

 

posted on 2010-10-13 19:23  role  阅读(346)  评论(0编辑  收藏  举报