Java或者C C 怎麼用回溯法解決最小長度電路板排列問題

2021-08-15 04:22:35 字數 2219 閱讀 6009

1樓:把酒醉顏歡

電路板排列問題是np難問題,因此不大可能找到解此問題的多項式時間演算法。考慮採用回溯法系統的搜尋問題解空間的排列樹,找出電路板的最佳排列。設用陣列b表示輸入。

b[i][j]的值為1當且僅當電路板i在連線塊nj中。設total[j]是連線塊nj中的電路板數。對於電路板的部分排列x[1:

i],設now[j]是x[1:i]中所包含的nj中的電路板數。由此可知,連線塊nj的連線跨越插槽i和i+1當且僅當now[j]>0且now[j]!

=total[j]。用這個條件來計算插槽i和i+1間的連線密度

具體**如下:

//電路板排列問題 回溯法求解

#include "stdafx.h"

#include

#include

using namespace std;

ifstream fin("5d11.txt");

class board

;template

int arrangement(int **b, int n, int m, int bestx);

int main()

//n1=,n2=,n3=,n4=,n5=cout<<"m="<>b[i][j];

cout<0 && total[k]!=now[k])}//更新ld

if(cd>ld)

if(ld

2樓:

你到底就看到多看看開啟打卡刷卡

3樓:來自開羅安靜的甘蔗

想要詳細一點的分析過程

最簡單的揹包問題!用c++!

4樓:傲世修羅王

求所有解可以用回溯法,求最優解一般用動態規劃或者貪心策略。

因為題目要求所有解,故採用回溯。

先建模:

此題目等價於自然數拆分,給定一個自然數n,將n拆分成n1 + n2 + ...+ nn,使得n1 + n2 + ...+ nn = n,且n1, n2, ...

nn中無重複數,求所有可能的拆分情況。這裡n相當於t,n1, n2,...nn相當於w1,w2,。。。

wn。建模完畢!

上**:

#include

using namespace std ;

// 儲存可行解

int a[100] ;

// 輸出一個可行解

void output(int *a, int n)// 驗證當前解是否可行

bool isok(int* a, int curindex, int curvalue)

// 對自然數n進行拆分,t用來控制拆分個數void partition(int n, int t, int *b) }

} int main(void)

;// 揹包容量為10,從b中選若干件物品,使這些物品總量為10partition(10, 0, b) ;

system("pause") ;

return 0 ;}

5樓:魔尊

#include"stdio.h"

const int n=10; //設定物體個數const int no=2;

#define weight 10 //限制質量#define num 100

int d[num]; //總質量int c[num][weight]; //對應的物體位置void best(int a,int n)}int k0=0,k1=k;

while(ko) //ko是物體個數的統計,當不能再多時賦值為0,退出迴圈

}if(k==k1)ko=-1; //物體個數不能再多時k0=k1;k1=k;ko++;

}int ok=0;

for(i=0;i

if(m==no)

printf("\n");

} }}

if(!ok) printf("no\n");

}void main()

相應的字母沒有完全按照你這題目來,希望你能看懂!

6樓:匿名使用者

這些問題自己想想或者查一下資料再做不是比問人更好嗎?

求premiere教程最好是cc或者cs6的最好網盤

我這裡有,pr的各個版本都有,都是整理好的,綠色破解版,帶cs6教程 從入門到精通 pr軟體帶配套教程 提取碼 7vg6 adobe.premiere.pro.cs6.或者cs5中文版基礎 教程,最好是網盤的,謝謝嗯 o o cs5的。5和6操作上幾乎一樣。無所謂。pr軟體中文版 提取碼 540q ...

大眾cc座椅記憶怎麼重新設定,關於大眾CC記憶座椅和倒車鏡怎麼設定

在連線電源的情況下先調整到你覺得舒服的位置,然後按一下m鍵,看m鍵上是否亮燈然後再按1 或者2數字,如果m上的燈滅了就行了。拓展 1 座椅帶記憶功能是指將電動座椅與車載電腦結合在一起,就可增加座椅的記憶功能,對座椅給中資訊引數實現智慧型化管理。將電動座椅與車載電腦結合在一起,就可增加座椅的記憶功能,...

java培訓生怎麼入行,java實習生培訓怎麼樣?

畢業後然後面試然後等待offer然後入職,大致就是整個流程啊。您是說的這意思吧?還是說如何面試如何就職?我們這邊學員畢業後就是去面試,輕鬆過關等著收offer就ok了。java實習生培訓怎麼樣?沒有那些培訓機構招聘java實習生,只不過是一種招生手段。如果想培訓直接找靠譜的培訓機構,如果不想培訓找乙...