#include<stdio.h>
#define n 3
int a[n][n] = {{0,2,3},{2,0,3},{3,3,0}};
int result[n] = {0,1,2};
int answer[n];
int minValue=9999;
int temp,tempValue;
void dfs(int t){
if(t==n){
tempValue = 0;
for(int i=0;i<n;i++){
for(int j=i+1;j<n;j++){
tempValue +=a[result[i]][result[j]]*(j-i);
}
}
if(tempValue<minValue){
minValue = tempValue;
for(int i=0;i<n;i++){
answer[i] = result[i]+1;
}
}
}
for(int i=t;i<n;i++){
temp = result[t];
result[t] = result[i];
result[i] = temp;
dfs(t+1);
temp = result[t];
result[t] = result[i];
result[i] = temp;
}
}
int main(){
dfs(0);
printf("%d\n",minValue);
for(int i=0;i<n;i++){
printf("%d\t",answer[i]);
}
return 0;
}
布线问题(回溯法)
最新推荐文章于 2022-12-10 17:38:56 发布