//老版母函数
//首先用c1,c2两个数组,c1[j]表示j块钱有c1[j]中表达方式
//c1[0]=1,c2 0
//关键for循环
for (int i = 0; i < n; ++i)//该循环是指每*种*货币一个个的放进去,共n种
{
for (int j = 0; j <= p; ++j)//这里是c1数组的循环,c1的数组界p
{
for (int k = 0; k <= num[i] && k*price[i] + j <= x; ++k)//将第i种货币放k张进去,该种货币最多num[i]个,price[i]表示该货币的价值
{
c2[j + k*price[i]] = c1[j];//更新j+k*price[i]的表示方式的个数并且保存在c2中
}
}
for (int j = 0; j <= p; ++j)//一种货币放完,开始放下一种货币之前要“初始化”
{
c1[j] = c2[j];
c2[j] = 0;
}
}
//指数型母函数
//与老版母函数类似
//同样c1,c2两个数组,并且是同样的含义,c1[j]表示j快钱有c1[j]中表达方式
//同样的初始化c1[0]=1;表示0块钱必有一种表达方式
//关键for循环
for (int i = 0; i < n; ++i)//将每种货币放入,货币共n种
{
for (int j = 0; j <= p; ++j)//与老版相同c1数组,界限为p
{
for (k = 0; k <= num
//老版母函数//首先用c1,c2两个数组,c1[j]表示j块钱有c1[j]中表达方式//c1[0]=1,c2 0//关键for循环for (int i = 0; i < n; ++i)//该循环是指每*种*货币一个个的放进去,共n种{ for (int j = 0; j <= p; ++j)//这里是c1数组的循环,c1的数组界p { for (int k = 0; k <=