母函数写法
函数 写法
2023-09-11 14:18:05 时间
1 import java.awt.Point; 2 import java.io.BufferedInputStream; 3 import java.util.ArrayList; 4 import java.util.List; 5 import java.util.Map; 6 import java.util.Scanner; 7 8 public class Main { 9 10 static int T=0,n=0,knum=0,sum=0,count=0; 11 // public static void dfs(List<Point> list,int k) 12 // { 13 // if(sum==n) 14 // { 15 // count++; 16 // return; 17 // } 18 // else if(sum<n) 19 // { 20 // if(k>=knum) 21 // return; 22 // Point point=list.get(k); 23 // for(int i=0;i<=point.y;i++) 24 // { 25 // sum=sum+i*point.x; 26 // dfs(list,k+1); 27 // sum=sum-i*point.x; 28 // } 29 // } 30 // else 31 // return; 32 // } 33 34 public static void dfs(List<Point> list,int k,int mysum) 35 { 36 if(mysum>50) 37 return; 38 if(k==list.size()) 39 { 40 if(mysum!=0) 41 count++; 42 return; 43 } 44 Point point=list.get(k); 45 for(int i=0;i<=point.y;i++) 46 { 47 //sum+=point.x*i; 48 int mynewsum=mysum+point.x*i; 49 if(mynewsum<=50) 50 dfs(list,k+1,mynewsum); 51 //sum-=point.x*i; 52 } 53 } 54 55 public static void main(String[] args) { 56 Scanner cin=new Scanner(System.in); 57 List<Point> list=new ArrayList<Point>(); 58 int a, b; 59 int num[]=new int[27]; 60 while(cin.hasNextInt()) 61 { 62 T = cin.nextInt(); 63 while(0!=T--) 64 { 65 // list.clear(); 66 int c1[]=new int[51],c2[]=new int[51]; 67 for(int i=0;i<51;i++) 68 { 69 c1[i]=0; 70 c2[i]=0; 71 } 72 c1[0]=1; 73 for(int i=1;i<=26;i++) //i代表第几项式 74 { 75 a=cin.nextInt(); 76 for(int j=50;j>=0;j--) //j代表 被乘的 第几项 77 { 78 if(c1[j]!=0) 79 for(int k=1;k<=a;k++) //k代表 i上的叠加,就是第i项式上的叠加数 80 { 81 if(j+k*i<51) //此后 j+k*i就是 第j项被乘了 k*i 82 c1[j+k*i]+=c1[j]; 83 } 84 } 85 } 86 sum=0; 87 for(int i=1;i<51;i++) 88 sum+=c1[i]; 89 System.out.println(sum); 90 91 count=0; 92 // dfs(list,0,0); 93 // dfs(num,0,0); 94 95 // System.out.println(count); 96 } 97 } 98 } 99 100 101 }
hdu2082 母函数写法
普遍写法如下:
1 例2 如同例1 但是每种纸币个数不限 ,现求表示不同数值的方案数。 2 由于是无限 ,母函数表示为 f(x)=(1+1*x+1*x^2+1*x^3....)(1+1*x^2+1*x^4+1*x^6....)(1+1*x^3+1*x^6+1*x^9....)(1+1*x^4+1*x^8+1*x^12....) 3 此时继续分析面值为4的情况:4=1+1+1+1=1+3=1+2+1=2+2 有5种情况。 4 5 代码2: 6 void Function2(int n) //纸币可以用无数次 n张纸币 7 { 8 int a[100],sum=0; //存贮币值 9 for(int i=0;i<n;i++) 10 { 11 cout<<"输入第"<<i+1<<"个纸币的面额:"<<endl; 12 cin>>a[i]; 13 sum+=a[i]; //由于无数个纸币,最大值也是无限大,此处最大值假设为sum 14 } 15 for(i = 0; i <=sum; i++) 16 { 17 c1[i] = 0; 18 c2[i] = 0; 19 } 20 for(i=0;i<=sum;i=i++) 21 c1[i]=1; 22 for(i=2;i<=n;i++) 23 { 24 for(int j=0;j<=sum;j++) 25 for(int k=0;k+j<sum;k=k+a[i-1]) 26 { 27 c2[j+k]+=c1[j]; 28 } 29 for(j=0;j<=sum;j++) 30 { 31 c1[j]=c2[j]; 32 c2[j]=0; 33 } 34 35 } 36 37 for(i=1;i<=sum;i++) 38 cout<<i<<"---"<<c1[i]<<endl; //输出每个面值对应的方案数 39 40 }
相关文章
- C#构造方法(函数) C#方法重载 C#字段和属性 MUI实现上拉加载和下拉刷新 SVN常用功能介绍(二) SVN常用功能介绍(一) ASP.NET常用内置对象之——Server sql server——子查询 C#接口 字符串的本质 AJAX原生JavaScript写法
- 你所不知道的printf函数
- SS-CA-APPLE:什么是复变函数?
- 第五章 Caché 函数大全 $BITLOGIC 函数
- sort函数、priority_queue中比较函数的写法
- Swift2.0语言教程之Swift2.0语言中的标准函数
- 《C和C++代码精粹》——1.11 函数重载和函数模板
- Jquery插件写法及extentd函数
- oracle函数 round(x[,y])
- 函数的绑定及支持
- 箭头函数arrow function写法与规则 && this指向
- C/C++调用java---JNI常用函数
- 函数及其应用
- Three 之 three.js (webgl)旋转属性函数的简单整理,以及基于此实现绕轴旋转的简单案例
- C++学习笔记27,虚函数作品
- 深度学习激活函数比较
- (2.16)Mysql之SQL基础——函数
- C语言memcpy等内存操作函数使用介绍
- VS2015按Ctrl+单击进入函数