目标:最节约打印纸张..前提如下:1张纸能够排版排下X个不同颜色相同尺寸的小方块,
现有N种不同颜色相同尺寸的小方块要排在同一张纸上打印,
每一种颜色的要求数量可能不一样.
问: 在打印时如何排版才能最省纸? 并且要满足不同颜色小方块所要求的数量.注:这里会出现某一些颜色的小方块必须要被多打印,没关系,只要能满足全部小方块对数量的需求,最省纸!
(所有出现的数量均为整数,不可能出现小数.)假设:    1)1张纸能够排版排下int PK=24 个;
    2)不同颜色的小方块要求的数量为:
int[] PDArray=new int[4]; //总颜色数为5
PDArray[0]=300;  //假设红色小方块所要求的数量为300个
PDArray[1]=1000; //假设绿色小方块所要求的数量为1300个
PDArray[2]=600;  //假设蓝色小方块所要求的数量为600个
PDArray[3]=3000;  //假设紫色小方块所要求的数量为3000个求:最省纸的纸张数为多少? 各位大虾请给出具体的计算过程.在线等待中... 

解决方案 »

  1.   

    这是公司在印刷排版时遇到的难题,现有计算是手工去拼凑,很费时间.而且公司另一软件USA程序员所写的有这部分的计算,但结果并不理想...希望各大虾不吝花点业余时间帮忙想想办法。解决后另开贴给288分....
      

  2.   

    凑几个上去得到整数再分配给不其它不同颜色的小方块-----我的意思是把最后一张纸补满。
    确定一张纸上要排多少个时-----是不是每张纸能印的小方格有有约束条件?
    还有你sample里有几个地方不是很理解
    现有N种不同颜色相同尺寸的小方块要排在同一张纸上打印----这句话怎么理解?
    int[] PDArray=new int[4]; //总颜色数为5---数组只有4吧
    PDArray[1]=1000; //假设绿色小方块所要求的数量为1300个---是1000还是1300
      

  3.   

    先更正偶表达的错误:
    int[] PDArray=new int[4]; //总颜色数为5---数组只有4吧 
    Re:贴错了,不好意思
    PDArray[1]=1000; //假设绿色小方块所要求的数量为1300个---是1000还是1300 
    Re:贴错了,不好意思求:应该是 如何排版才能最省纸? 最省纸的纸张数为多少? 注意: 每张纸上分配不同颜色的方块是一样的.比如打印出来第一张纸上有5个红色小方块.所有纸上打印出来红色小方块必需是5个.
      

  4.   

    也就是在印刷技术上模版的问题。很抱歉偶没表达清楚。偶原想尽量不涉及印刷上的专有东东.好让大伙理解...看这样比喻会不好些:
    假如word里只有一页(这就是印刷上的模版),
    要把这一页在打印机里重复打印出来N页。
    而word里的这一页会固定的放N种不同颜色相同尺寸的小方块(只管它能排得下多少个就行).
    现每一种不同颜色的小方块需求数量不一样,
    如何分配这些小方块在word里的这一页, 然后打印出来可以满足不同颜色的小方块的需求数量 ? 且最省纸! 
    当然分配这些小方块在word里的这一页打出来肯定会有部分小方块数量会有多。
    没关系。要的是最省纸! 比如:红色小方块在word里的这一页排下4个.打印纸张2000张。则红色小方块总数=4*2000=8000个.
      

  5.   

    是不是这个意思:
    1 所有的方块都必须被打印
    2 打印的排版可以随意指定,但打印后每页中的方块数必须相同:
    如第一页中红色的4个,以后的页中红色的也只能是4个
    3 求当所有方块都被打印后,所消耗纸张的最小值====CSDN 小助手 V2.5 2005年11月05日发布====
    CSDN小助手是一款脱离浏览器也可以访问Csdn论坛的软件
    界面:http://blog.csdn.net/Qqwwee_Com/archive/2005/11/05/523395.aspx
    下载:http://szlawbook.com/csdnv2
      

  6.   

    http://blog.csdn.net/bluebohe/archive/2004/02/20/21054.aspx
      

  7.   

    bluebohe(薄荷)你好。我看到你的blog上:http://blog.csdn.net/bluebohe/archive/2004/02/20/21054.aspx
    可能是对排版实际处理中的问题。而我现在的问题是已经知道能排得下多少个. 但是针对不同的产品尺寸是一样的最优算法.
    能否帮忙想想这算法. 只要能粗略的表达一下如何实现就行.
    现在的要求是如何排版能省纸张,
    实际上还可以进一步提升为:
    1:有N个相同尺寸不同种类的产品要排个M 张版上
    2:版能排得下相同尺寸的产品数量为固定的常数,
    3:求: 每一张版最省纸,所有产品排的版是最省版.... 
    这个好像更难...
      

  8.   

    这个题目不难啊,关键是要去找一个支持整数规划的包,实在不行可以用Excel来算的
      

  9.   

    其实很简单,对这个规划问题建模如下:设在每张纸上分别打印 a, b ,c ,d 个, 共打印x张得到方程F = min(x)约束a + b + c + d <= 24
    a * x >= 300
    b * x >= 1000
    c * x >= 600
    d * x >= 300这样就可以了吧,找个函数包去算好了
      

  10.   

    不过可以先像上面这样计算出x的最小值205然后依次搜索看是否存在有效的a,b,c,d,如果不行,那么增加纸张继续搜,估计可以吧
      

  11.   

    支持 tiaoci(我挑刺,我快乐)