亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? suanfa.cpp

?? 用VC編寫的01背包問題,功能強(qiáng)大,是在老師的指導(dǎo)下完成的,大家可以用來參考
?? CPP
字號:
#include "stdafx.h"

#include<iostream.h>
#include<stdio.h>
#include<stdlib.h>

typedef float T;


T c;	//背包容量
int n;	//物品數(shù)
T *w;	//物品重量
T *p;	//物品價值
T cw;	//當(dāng)前重量
T cp;	//當(dāng)前價值
int *choose;	//當(dāng)前裝載情況
T bestp;	//最優(yōu)價值
int *bestc;	//最優(yōu)裝載情況
#define  MAXNUM   100

//回溯法
void backtrack(int t)
{
	int i,j;
	if(t>n)
	{
		for(i=1;i<=n;i++)
		{
			cout<<choose[i]<<" ";
		}
		cout<<cw<<" ";
		cout<<cp<<endl;
		if(cp>bestp)
		{
			bestp=cp;
			for(j=1;j<=n;j++)
			{
				bestc[j]=choose[j];
			}
		}
	}
	else
	{
		for(i=0;i<=1;i++)
		{
			if(i==0)
			{
				choose[t]=0;
				backtrack(t+1);
			}
			if(i==1 && cw+w[t]<=c)
			{
				cw+=w[t];
				cp+=p[t];
				choose[t]=1;
				backtrack(t+1);
			}
		}
	}
	cw-=w[t-1]*choose[t-1];
	cp-=p[t-1]*choose[t-1];
}

//貪心法
void greedy()
{


	int index=1,max=0;
	int *temp;
	temp=new int[n+1];
	for(int i=1;i<=n;i++)
	{
		choose[i]=0;
		cw=0;
		cp=0;
	}
	for(int j=1;j<=n;j++)
	{
		for(i=1;i<=n;i++)
		{
			if((p[j]/w[j])<(p[i]/w[i]))
			{
				index++;
			}

		}
		temp[j]=index;
		index=1;
	}
	for(i=1;i<=n;i++)
	{
		for(j=1;j<=n;j++)
		{
			if(temp[j]==i)
			{
				if(w[j]<c)
				{
					choose[j]=1;
					c-=w[j];
					cw+=w[j];
					cp+=p[j];
				}
			}
		}
	}
	
	bestp=cp;
	for(i=1;i<=n;i++)
	{
		bestc[i]=choose[i];
	}
}

struct node
{
    int step;
    T price;
    T weight;
    T max, min;
    unsigned long po;
};

typedef struct node DataType;

struct  SeqQueue 
{        /* 順序隊(duì)列類型定義 */
    int  f, r;
    DataType  q[MAXNUM];
};

typedef  struct SeqQueue *PSeqQueue;    


PSeqQueue createEmptyQueue_seq( void ) 
{  
    PSeqQueue paqu;
    paqu = (PSeqQueue)malloc(sizeof(struct SeqQueue));
    if (paqu == NULL)
        printf("Out of space!! \n");
    else 
        paqu->f = paqu->r = 0;

    return paqu;
}

int  isEmptyQueue_seq( PSeqQueue paqu ) {
    return paqu->f == paqu->r;
}

// 在隊(duì)列中插入一元素x 
void  enQueue_seq( PSeqQueue paqu, DataType x ) {
    if( (paqu->r + 1) % MAXNUM == paqu->f  )
        printf( "Full queue.\n" );
    else {
        paqu->q[paqu->r] = x;
        paqu->r = (paqu->r + 1) % MAXNUM;
    }
}

// 刪除隊(duì)列頭元素
void  deQueue_seq( PSeqQueue paqu ) {
    if( paqu->f == paqu->r )
        printf( "Empty Queue.\n" );
    else
        paqu->f = (paqu->f + 1) % MAXNUM;
}

// 對非空隊(duì)列,求隊(duì)列頭部元素
DataType  frontQueue_seq( PSeqQueue paqu ) 
{
    return (paqu->q[paqu->f]);
}

// 求最大可能值
T up(int k, T m, int n, T p[], T w[]){
    int i = k;
    T s = 0;
    while (i < n && w[i] < m) {
        m -= w[i];
        s += p[i];
        i++;
    }
    if (i < n && m > 0) {
        s += p[i] * m / w[i];
        i++;
    }
    return s;
}

// 求最小可能值
T down(int k, T m, int n, T p[], T w[]){
    int i = k;
    T s = 0;
    while (i < n && w[i] <= m) {
        m -= w[i];
        s += p[i];
        i++;
    }
    return s;
}

// 用隊(duì)列實(shí)現(xiàn)分支定界算法
T solve(T m, int n, T p[], T w[], unsigned long* po)
{
    T min;
    PSeqQueue q = createEmptyQueue_seq();
    DataType x = {0,0,0,0,0,0};
    x.max = up(0, m, n, p, w);
    x.min = min = down(0, m, n, p, w);
    if (min == 0) return -1;
    enQueue_seq(q, x);
    while (!isEmptyQueue_seq(q))   
	{
        int step;
        DataType y;
        x = frontQueue_seq(q);
        deQueue_seq(q);
        if (x.max < min) continue;
        step = x.step + 1;
        if (step == n+1) continue;
        y.max = x.price + up(step, m - x.weight, n, p, w);
        if (y.max >= min) 
		{
            y.min = x.price + down(step, m-x.weight, n, p, w);
            y.price = x.price;
            y.weight = x.weight;
            y.step = step;
            y.po = x.po << 1;
            if (y.min >= min) 
			{
                min = y.min;
                if (step == n) 
				{
					*po = y.po;
				}
            }
            enQueue_seq(q, y);
        }
        if (x.weight + w[step-1] <= m) 
		{
            y.max = x.price + p[step-1]+up(step, m-x.weight-w[step-1], n, p, w);
            if (y.max >= min) 
			{
                y.min = x.price + p[step-1]+down(step, m-x.weight-w[step-1], n, p, w);
                y.price = x.price + p[step-1];
                y.weight = x.weight + w[step-1];
                y.step = step;
                y.po = (x.po << 1) + 1;
                if (y.min >= min) 
				{
                    min = y.min;
                    if (step == n) 
					{
						*po = y.po;
					}
				}
                enQueue_seq(q, y);
            }
        }
    }
    return min;
}

//分支限界法
void fzjx()
{
	T d;
    unsigned long po;
    d = solve(c, n, &p[1], &w[1], &po);
    if (d == -1)
	{
        printf("No solution!\n");
	}
    else 
	{
        for (int i = 0; i < n; i++)
		{
			bestc[i+1]=((po & (1<<(n-i-1))) != 0);
		}
		bestp=d;
    }
}

void Traceback(int n,T w[],T v[],T p[][2],int *head,int x[])
{
	T j=p[head[0]-1][0],
	m=p[head[0]-1][1];
	for(int i=1;i<=n;i++)
	{
		x[i]=0;
		for(int k=head[i+1];k<=head[i]-1;k++)
		{
			if(p[k][0]+w[i]==j && p[k][1]+v[i]==m)
			{
				x[i]=1;
				j=p[k][0];
				m=p[k][1];
				break;
			}
		}
	}
}

T Knapsack(int n,T c,T v[],T w[],T p[][2],int x[])
{
	int *head=new int[n+2];
	head[n+1]=0;
	p[0][0]=0;
	p[0][1]=0;
	int left=0,right=0,next=1;
	head[n]=1;

	for(int i=n;i>=1;i--)
	{
		int k=left;
		for(int j=left;j<=right;j++)
		{
			if(p[j][0]+w[i]>c) break;
			T y=p[j][0]+w[i],
			m=p[j][1]+v[i];
			while(k<=right && p[k][0]<y)
			{
				p[next][0]=p[k][0];
				p[next][1]=p[k][1];
				next++;
				k++;
			}
			if(k<=right && p[k][0]==y)
			{
				if(m<p[k][1]) m=p[k][1];
				k++;
			}
			if(m>p[next-1][1])
			{
				p[next][0]=y;
				p[next][1]=m;
				next++;
			}
			while(k<=right && p[k][1]<=p[next-1][1])
			{
				k++;
			}
		}
		while(k<=right)
		{
			p[next][0]=p[k][0];
			p[next][1]=p[k][1];
			next++;k++;
		}
		left=right+1;
		right=next-1;
		head[i-1]=next;
	}
	Traceback(n,w,v,p,head,x);
	return p[next-1][1];
}

//動態(tài)規(guī)劃
void dtgh()
{
	T o[65536][2];
    bestp=Knapsack(n,c,p,w,o,bestc);
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品影视天天线| 久久精品国产99国产精品| 欧美妇女性影城| 国产成人鲁色资源国产91色综| 樱桃国产成人精品视频| 久久品道一品道久久精品| 欧美日韩综合色| 国产成人8x视频一区二区| 日本在线不卡一区| 亚洲一区二区三区中文字幕| 久久这里只有精品首页| 欧美日韩aaaaa| 91在线云播放| 成人免费视频视频在线观看免费| 日韩一区精品视频| 夜色激情一区二区| 亚洲欧洲精品成人久久奇米网| 精品免费国产二区三区| 欧美日韩美少妇| 一本色道久久加勒比精品| 国产精品一二三四区| 日本视频一区二区三区| 1区2区3区欧美| 国产女人水真多18毛片18精品视频| 91精品国产欧美日韩| 欧美日韩在线一区二区| 99久久国产综合色|国产精品| 国产精品一品视频| 精品制服美女丁香| 蜜桃免费网站一区二区三区| 日韩国产一区二| 亚洲一级在线观看| 亚洲制服丝袜在线| 亚洲人成精品久久久久| 亚洲欧洲日产国码二区| 国产精品视频九色porn| 久久久影院官网| 国产亚洲成av人在线观看导航| 欧美一级日韩不卡播放免费| 91精品免费在线| 制服丝袜中文字幕一区| 91精品免费观看| 欧美成人在线直播| 精品成人免费观看| 久久伊99综合婷婷久久伊| 久久亚洲综合色一区二区三区| 精品国产乱码久久| 精品国产sm最大网站| 久久蜜臀精品av| 国产欧美一区二区精品忘忧草| 国产欧美一区二区三区在线看蜜臀| 久久精品一二三| 国产精品二区一区二区aⅴ污介绍| 最近中文字幕一区二区三区| 国产精品久久久久久久久快鸭| 成人欧美一区二区三区| 亚洲专区一二三| 另类人妖一区二区av| 国产精品一级黄| 99久久婷婷国产| 欧美色偷偷大香| 日韩无一区二区| 久久综合成人精品亚洲另类欧美 | 中文字幕在线一区| 日韩理论片在线| 亚洲综合激情另类小说区| 秋霞国产午夜精品免费视频| 精品午夜久久福利影院| 岛国av在线一区| 在线影院国内精品| 3751色影院一区二区三区| 久久免费午夜影院| 亚洲精品国产无天堂网2021 | 国产99精品视频| 色狠狠综合天天综合综合| 在线成人午夜影院| 久久日韩精品一区二区五区| 国产精品的网站| 性感美女极品91精品| 久久99精品久久久久久动态图 | 亚洲国产精品精华液2区45| 亚洲欧洲日韩在线| 秋霞影院一区二区| 成人天堂资源www在线| 欧美色国产精品| 国产婷婷一区二区| 日韩精品久久久久久| 国产精品一区二区x88av| 欧洲一区二区三区在线| 久久综合精品国产一区二区三区| 亚洲三级理论片| 老司机免费视频一区二区| 91玉足脚交白嫩脚丫在线播放| 欧美一级专区免费大片| 中文字幕亚洲成人| 久久机这里只有精品| 在线观看av一区| 国产精品国产三级国产有无不卡 | 日产精品久久久久久久性色| 99久久伊人精品| 亚洲精品在线电影| 亚洲综合激情网| 成人小视频在线| 亚洲精品一区二区三区四区高清| 亚洲综合无码一区二区| 成人黄色大片在线观看| 精品电影一区二区三区| 日韩电影在线看| 在线日韩av片| 国产精品久久久久久户外露出| 日本不卡一二三区黄网| 欧美性一区二区| 亚洲男女毛片无遮挡| 国产a区久久久| 2020国产成人综合网| 奇米综合一区二区三区精品视频| 97超碰欧美中文字幕| 中文字幕欧美三区| 开心九九激情九九欧美日韩精美视频电影| 色综合久久中文字幕综合网| 欧美激情一二三区| 狠狠色狠狠色合久久伊人| 欧美喷水一区二区| 亚洲综合一二区| 在线看国产一区| 一区二区三区在线视频播放| a4yy欧美一区二区三区| 中文字幕不卡在线观看| 国产很黄免费观看久久| 国产亚洲视频系列| 国产91丝袜在线播放0| 久久综合久色欧美综合狠狠| 国产一区二区免费看| 久久综合九色综合欧美亚洲| 国内精品写真在线观看| 精品久久久久久久人人人人传媒| 丝袜亚洲另类欧美| 91精品国产综合久久香蕉的特点 | 成人性生交大片免费看中文| 国产女同互慰高潮91漫画| 成人激情动漫在线观看| 一区二区三区中文字幕| 色国产综合视频| 一区二区成人在线视频| 欧美三日本三级三级在线播放| 亚洲国产精品一区二区久久| 欧美日韩精品欧美日韩精品一| 亚洲123区在线观看| 制服丝袜亚洲播放| 久久99精品一区二区三区三区| 亚洲精品一区二区三区蜜桃下载 | 久久你懂得1024| 粉嫩av一区二区三区粉嫩| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 日韩一区二区三区观看| 国产在线不卡一卡二卡三卡四卡| 国产香蕉久久精品综合网| 成人免费高清在线| 一区二区三区四区不卡视频| 欧美精品久久久久久久多人混战 | 精品国产sm最大网站| 国产99久久久久久免费看农村| 亚洲视频一区二区在线| 欧美三级电影精品| 国内精品伊人久久久久av影院| 国产精品嫩草影院com| 91国偷自产一区二区三区观看| 丝袜亚洲另类欧美| 国产欧美日韩亚州综合 | 亚洲午夜精品久久久久久久久| 91精品国产一区二区| 国产成人h网站| 夜夜嗨av一区二区三区网页| 日韩精品中文字幕在线不卡尤物| 丁香婷婷深情五月亚洲| 亚洲一区二区三区视频在线| 日韩美一区二区三区| av福利精品导航| 美女视频一区二区三区| 国产精品国产三级国产aⅴ原创| 欧美精品第1页| 国产成人av资源| 日本在线不卡视频| 最新国产の精品合集bt伙计| 欧美成人a视频| 在线免费亚洲电影| 激情综合网最新| 洋洋av久久久久久久一区| 国产亚洲精品超碰| 69成人精品免费视频| www.亚洲人| 激情六月婷婷久久| 亚洲综合在线第一页| 国产精品免费久久| 日韩一区二区三区四区五区六区 | av午夜精品一区二区三区| 全部av―极品视觉盛宴亚洲| 一区二区三区在线播放| 久久久午夜精品| 日韩欧美一级片|