您的位置:首页 > 其它

BackTrack ---装载问题

2010-04-18 11:06 176 查看
/*

* test.cpp

*

* Created on: 2010-4-17

* Author: Sarah

*/

#include <iostream>

using namespace std;

void back_track(int c[],int x[],int size,int i,int rest);

int bestw = 0;

int maxc = 152;

int cw = 0;

int bestx[8];

int main()

{

int c[8] = {0,90,80,40,30,20,12,10};

int x[8];

int rest = 0;

for (int m = 0; m < 8; m++)

{

x[m] = 0;

rest = rest + c[m];

bestx[m] = 0;

}

back_track(c,x,7,1,rest);

for (int n = 0; n < 8; n++)

{

if(bestx
== 1)

cout<<c
<<" ";

}

cout<<endl;

cout<<bestw<<endl;

return 0;

}

void back_track(int c[],int x[],int size,int i,int rest)

{

if(i > size)

{

// cout<<cw<<endl;

if(cw > bestw)

{

for (int n = 0; n <= size; n++)

{

bestx
= x
;

}

bestw = cw;

}

return;

}

else

{

rest = rest - c[i];

if((cw+c[i]) < maxc)

{

x[i] = 1;

cw = cw + c[i];

back_track(c,x,size,i+1,rest);

cw = cw - c[i];

}

if((cw+rest) > bestw )

{

x[i] = 0;

back_track(c,x,size,i+1,rest);

}

rest = rest + c[i];

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: