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

時間 2021-08-15 04:22:14

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樓:匿名使用者

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

用 迴歸 怎麼造句,迴歸怎麼造句

肥貓警長 1 萬物生於塵土,迴歸塵土。2 時光,能將所有的東西迴歸原始,而世上本沒有醜惡,所有生命誕生的那一刻,都是美的。3 我們應該把所有繁複的過程,都當做是簡單迴歸,把一切凡塵的榮辱,當做是雲煙過眼。4 最好的生活狀態莫過於,你在你青春的年紀為了理想堅持過,最後迴歸平淡,用現實的方法讓自己生活下...

大眾CC怎麼樣,大眾CC怎麼樣

優點 1 在同級別,同價位車型中,cc動力性操控性最出色。2 在級別中,造型相對比較前衛,設計新穎,流線,動感。3 採用直噴 增壓和雙離合技術,在同級別中,燃油經濟型最好。缺點 1 排氣管應為雙側單出 2 中控及內飾應加裝桃木 進口版本 選項 3 應有輪胎19寸選裝 4 多功能顯示屏太小,應加大。綜...

大眾cc定速巡航怎麼用,大眾cc怎麼設定定速巡航

大眾cc定速巡航使用方法 當車輛的時速到40公里以上,開啟巡航開關,按減速按鍵就可以了,設多少公里就開多快,再按下減速的按鍵就進入巡航功能。解除很簡單,踩下剎車就自動解除了。大眾cc定速巡航設定,大眾cc要求的車速要高於40km h時定速巡航系統起作用。1 啟動車速巡航系統將滑動開關置於 on 位置...