输入格式:
输入数据的第一行有1 个正整数n (1≤n≤20)。接下来的n行,每行n个数,表示工作费用。
输出格式:
将计算出的最小总费用输出到屏幕。
输入样例:
在这里给出一组输入。例如:
3
10 2 3
2 3 4
3 4 5
输出样例:
在这里给出相应的输出。例如:
9
#include<iostream>
#include<climits>
using namespace std;
#define N 21
int cost[N][N];
int a[N];
int n,cv;
int bestv=INT_MAX;
void backtrack(int t)
{if(t>n){if(cv<bestv)bestv=cv;return;}else{for(int i=t;i<=n;i++){cv+=cost[t][a[i]];swap(a[t],a[i]);if(cv < bestv)backtrack(t+1);swap(a[t],a[i]);cv-= cost[t][a[i]];}}
}int main()
{int i,j;while(cin>>n){for(i=1;i<=n;i++)for(j=1;j<=n;j++)cin>>cost[i][j];for(i=1;i<=n;i++)a[i]=i;backtrack(1);cout<<bestv<<endl;}return 0;
}
本文发布于:2024-02-02 12:04:58,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170684669743680.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |