1、1. 普通背包:
#include
2、{ int i,j; for(j=2;j<=n;j++) { goods[0]=goods[j]; i=j-1; while (goods[0].p>goods[i].p) { goods[i+1]=goods[i]; i--;
3、 } goods[i+1]=goods[0]; } } void bag(Good goods[],float M,int n) { float left; int i,j; for(i=1;i<=n;i++) goods[i].X=0; left=M; //========背包剩余容量
4、 for(i=1;i
5、所要放的量
for(j=2;j<=n;j++) //==========按物品编号做降序排列
{ goods[0]=goods[j];
i=j-1;
while (goods[0].flag 6、 }
goods[i+1]=goods[0];
}
cout<<"最优解为:"< 7、 int j,n;
float M;
Good *goods; //=======/定义一个指针
while(j)
{
cout<<"\t"<<"请输入物品的总种类数:";
cin>>n;
goods=new struct Good [n+1];
cout<<"\t"<<"请输入背包的最大容量:";
8、 cin>>M;
cout< 9、 goods[i].p=goods[i].p/goods[i].w; //==========得出物品的效益,重量比
cout< 10、dl;
cin>>j;
}
}
2. 棋盘覆盖:
#include 11、/t为L型骨牌号,S分割棋盘
if(dr 12、 s);
else
{
board[tr+s-1][tc+s]=t; //覆盖2号三格板
chessBoard(tr, tc+s, tr+s-1, tc+s, s); //覆盖其余部分
}
if(dr>=tr+s && dc 13、 tc+s-1, s); //覆盖其余部分
}
if(dr>=tr+s && dc>=tc+s) //残缺方格位于右下棋盘
chessBoard(tr+s, tc+s, dr, dc, s);
else
{
board[tr+s][tc+s]=t; //覆盖4号三格板
chessBoard(tr+s, tc+s, tr+s, tc+s, s);//覆盖其余棋盘
}
}
void main()
{
int size;
cout<<"输入棋盘的size(大小必须是2的n次幂): "< ©2010-2025 宁波自信网络信息技术有限公司 版权所有 客服电话:4009-655-100 投诉/维权电话:18658249818=tc+s) //残缺棋盘位于右上棋盘
chessBoard(tr, tc+s, dr, dc,