我是靠谱客的博主 调皮小土豆,最近开发中收集的这篇文章主要介绍回溯法——任务分配问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

#include"stdio.h"
#include"stdlib.h"
int map[13][13],a[14],n;
int best=65535;
int swap(int *a,int *b)//交换函数
{
int c;
c=*a;*a=*b;*b=c;
}
int sum(int k)//累加函数
{
int tmp=0,i;
for(i=1;i<=k;i++)
tmp+=map[i][a[i]];
return tmp;
}
void back(int k)
{
int sum1=0,i;
if (k==n)
{
sum1=sum(n);
if (sum1<best) best=sum1;
return;
}
for(i=k;i<=n;i++)
{
swap(&a[i],&a[k]);
if (sum(k)<best)
back(k+1);
swap(&a[i],&a[k]);
}
}
int main()
{
int i,j;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
scanf("%d",&map[i][j]);
}
for(i=1;i<=n;i++)
a[i]=i;
back(1);
printf("%dn",best);
}
/*
4
3 8 4 12
9 12 13 5
8 7 9 3
12 7 6 8
*/

最后

以上就是调皮小土豆为你收集整理的回溯法——任务分配问题的全部内容,希望文章能够帮你解决回溯法——任务分配问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部