母函数通用模板
来源:互联网 发布:php帮助手册下载 编辑:程序博客网 时间:2024/06/05 09:38
本文内容参考下面的文章:
http://blog.csdn.net/xiaofei_it/article/details/17042651
看下面的问题:
解决上述问题的通用代码模板如下:
#include<iostream>using namespace std;//动态内存分配不用memset或memcpy来初始化或复制数组int main(){int i,j,m;//循环变量int k;//有k种硬币,则有k个()相乘int *v = new int[k+1];//v[0]不用,v[i]为第i种硬币的价值//s和e的含义:第i种硬币至少用s[i]个,至多用e[i]个int *s = new int[k+1];//s[0]不用int *e = new int[k+1];//e[0]不用/**k,v,s,e的具体值需要自行输入或设置*///计算最高次数MAX = 最高次数int MAX = 0;for(i=1;i<=k;i++)MAX += v[i]*e[i];int *a = new int[MAX+1];//a和b用于记录运行结果int *b = new int[MAX+1];for(i=0;i<=MAX;i++){a[i] = 0;b[i] = 0;}a[0] = 1;//下面是相乘的过程,代码很难理解!!!for(i=1;i<=k;i++){//for(m=0;m<=MAX;m++)b[m]=0;for(j=s[i];j<=e[i] && j*v[i]<=MAX;j++)for(m=0;m+j*v[i]<=MAX;m++)b[m+j*v[i]] += a[m];for(m=0;m<=MAX;m++){a[m] = b[m];b[m] = 0;}}/**程序运行至此,a[1],a[2],...,a[MAX]是x,x^2,...,x^MAX的系数*/return 0;}由于上述代码可以解决多数母函数问题,所以,即使不能理解代码,可以先背下来,遇到题目直接套用,也许用着用着,就理解了.
下面,利用上面的模板,求解一个例题
根据生成函数可知,参数如下:
k=3.
v[1]=1,v[2]=3,v[3]=5.
s[1]=0,s[2]=1,s[3]=0.
e[1]=2,e[2]=2,e[3]=3.
代入模板,即可.
代码如下:
#include<iostream>using namespace std;int main(){int i,j,m;int k = 3;int v[] = {0,1,3,5};int s[] = {0,0,1,0};int e[] = {0,2,2,3};//上述v[0],s[0],e[0]都不会用到int MAX = 0;for(i=1;i<=k;i++)MAX += v[i]*e[i];int *a = new int[MAX+1];int *b = new int[MAX+1];for(i=0;i<=MAX;i++){a[i] = 0;b[i] = 0;}a[0] = 1;//开始计算for(i=1;i<=k;i++){for(j=s[i];j<=e[i] && j*v[i]<=MAX;j++)for(m=0;m+j*v[i]<=MAX;m++)b[m+j*v[i]] += a[m];for(m=0;m<=MAX;m++){a[m] = b[m];b[m] = 0;}}//输出的分别是x,x^2,x^3,...,x^MAX的系数for(i=1;i<=MAX;i++)cout << a[i]<< " ";cout << endl;return 0;}
0 0
- 母函数通用模板
- 通用函数可变参数模板
- 通用函数模板可变参数
- 通用的图像模板操作函数
- 母函数详解和史上最通用最高效的母函数模板
- 母函数详解和史上最通用最高效的母函数模板
- 母函数详解和史上最通用最高效的母函数模板
- 母函数详解和史上最通用最高效的母函数模板
- 母函数详解和史上最通用最高效的母函数模板
- C++ 函数模板(十四)--template 泛型函数模板、通用函数、重载模板
- 通用模板
- 通用模板
- 通用模板
- 基于GDAL的一个通用的3×3模板函数
- 函数指针与模板的通用之处
- c++ 模板学习笔记:函数模板实现数组通用排序和遍历打印(权哥)
- 通用函数
- 通用函数
- JAVA中的代码块、静态代码块、构造方法、main方法执行顺序
- Ubuntu下配置Eclipse支持NS3
- 初始化Web容器时加载Servlet时加载server.xml里的数据源和
- ubuntu14.04配置hadoop完全分布式
- 静态链表
- 母函数通用模板
- conda管理python开发环境
- Android 录制的mp4视频文件在IOS中无法播放问题
- 密码学——公钥与私钥(非对称加密)
- 获取并处理中文维基百科语料
- 如何用nodejs+jquery.ajaxfileupload.js实现文件上传功能
- C++ vector总结----未完
- 紧急拨号
- Best Cow Line FZU