博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
连续邮资问题
阅读量:4155 次
发布时间:2019-05-25

本文共 1768 字,大约阅读时间需要 5 分钟。

class Stamp{    friend int MaxStamp(int, int, int[]);private:    void BackTrack(int i, int r);    int n,			//邮票面值数        m,			//每张信封最多允许贴的邮票数        maxvalue,	//当前最优值        maxint,		//大整数        maxl,		//邮资上界        *x,			//当前解        *y,			//贴出各种邮资所需最少邮票数        *bestx;		//当前最优解};void Stamp::BackTrack(int i, int r){//当前的邮票是x[i],r是x[1- i-1]邮票所能表示的最大的连续上界    int j;    int k;    for(int j=0; j<=x[i]*(m-1); j++)        if(y[j]
=n) { if(r>maxvalue) { maxvalue=r; for(int j=1;j<=n;j++) bestx[j]=x[j]; } return; } int *z=new int [maxl+1]; for(int k=1;k<=maxl;k++) z[k]=y[k]; for(j=x[i]+1;j<=r+1;j++)//下一个区间的取值范围从[r+1,...],所以必须保证有值能取到r+1,因为这个区间能取到的最大连续值是r { if (y[r+1 - j] < m) { x[i+1]=j; BackTrack(i+1,r);//r代表当前区间能取到的最大连续值 for(k=1;k<=maxl;k++) y[k]=z[k]; } } delete [] z;}int MaxStamp(int n, int m, int bestx[]){ int i; Stamp X; int maxint=32767; int maxl=1500; X.n=n; X.m=m; X.maxvalue=0; X.maxint=maxint; X.maxl=maxl; X.bestx=bestx; X.x=new int [n+1]; X.y=new int [maxl+1]; for(int i=0;i<=n;i++) X.x[i]=0; for(i=1;i<=maxl;i++) X.y[i]=maxint; X.x[1]=1; X.y[0]=0; X.BackTrack(1,0);//这样取值比王晓东书上的更好理解了,0前一个区间能取到的最大连续值是0,这是因为前一个区间没有任何邮票的面值 delete [] X.x; delete [] X.y; return X.maxvalue;}int main(){ int n,m; // cout<<"请输入邮票面值数(n)和每张信封最多允许贴出的邮票数(m):"; while(scanf("%d%d",&n,&m)) { int *bestx=new int [n+1]; int maxvalue; maxvalue=MaxStamp(n,m,bestx); cout<<"最优解为: "; for(int i=1;i<=n;i++) cout<
<<" "; cout<<"\n"<<"最大连续邮资区间为:"<
<

转载地址:http://mveti.baihongyu.com/

你可能感兴趣的文章
Android 的source (需安装 git repo)
查看>>
Commit our mod to our own repo server
查看>>
LOCAL_PRELINK_MODULE和prelink-linux-arm.map
查看>>
Simple Guide to use the gdb tool in Android environment
查看>>
Netconsole to capture the log
查看>>
Build GingerBread on 32 bit machine.
查看>>
How to make SD Card world wide writable
查看>>
Detecting Memory Leaks in Kernel
查看>>
Linux initial RAM disk (initrd) overview
查看>>
Timestamping Linux kernel printk output in dmesg for fun and profit
查看>>
There's Much More than Intel/AMD Inside
查看>>
CentOS7 安装MySQL 5.6.43
查看>>
使用Java 导入/导出 Excel ----Jakarta POI
查看>>
本地tomcat 服务器内存不足
查看>>
IntelliJ IDAE 2018.2 汉化
查看>>
基于S5PV210的uboot移植中遇到的若干问题记录(一)DM9000网卡移植
查看>>
Openwrt源码下载与编译
查看>>
我和ip_conntrack不得不说的一些事
查看>>
Linux 查看端口使用情况
查看>>
文件隐藏
查看>>