| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 482 人关注过本帖
标题:小女子求助
只看楼主 加入收藏
xiaowenqiao
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2007-3-19
收藏
 问题点数:0 回复次数:5 
小女子求助
这是一个求最小生成树的代码,先输入结点个数,再输入一个方阵,表示这些结点之间的距离,但是经过系统评测是错误的,有大牛帮忙一下小女子吗
#include<stdio.h>
int a[1002][1002];
int b[1002];
int c[1002];
main()
{
int n,i,j,l,k,m,p,min,sum;

while((scanf("%d",&n))!=EOF)
{
sum=0;
for(i=1;i<=n;i++)
{
b[i]=0;
c[i]=0;
for(j=1;j<=n;j++)
scanf("%d",&a[i][j]);
}
m=1;
c[1]=1;
b[1]=1;
for(i=1;i<=n-1;i++)
{
min=200;
if(i<=n/2)
{
for(j=1;j<=m;j++)
{
j=c[j];
for(k=1;k<=n;k++)
if(b[k]==0 && j!=k && a[j][k]<min)
{
min=a[j][k];
p=k;
}
}
sum=sum+min;
b[p]=1;
c[m+1]=p;
m++;
}
else
{
for(l=1;l<=n;l++)
if(b[l]==0)
{
for(k=1;k<=m;k++)
{
k=c[k];
if(a[l][k]<min && l!=k)
{
min=a[l][k];
p=l;
}
}
}
sum=sum+min;
b[p]=1;
c[m+1]=p;
m++;
}
}
printf("%d\n",sum);
}
return 0;
}
搜索更多相关主题的帖子: 小女子 
2007-03-19 22:40
xiaowenqiao
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2007-3-19
收藏
得分:0 
难道没人回复吗?大家帮帮忙啊
2007-03-19 22:44
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 

看样子学数据结构要加快脚步了,nuciewth快过来帮忙看看


雁无留踪之意,水无取影之心
2007-03-19 22:45
luckdog0426
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2007-3-1
收藏
得分:0 
灌水
2007-03-20 09:46
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 

我来了,一点注释都没有.建议使用结构体.
先看看再说.


倚天照海花无数,流水高山心自知。
2007-03-20 11:22
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
没看懂另外两个数组的用处.下面的可以合并.
for(i=1;i<=n-1;i++)
{
min=200;
if(i<=n/2)//下面的代码都是一样的.那为什么要判断?
{
for(j=1;j<=m;j++)
{
j=c[j];
for(k=1;k<=n;k++)
if(b[k]==0 && j!=k && a[j][k]<min)
{
min=a[j][k];
p=k;
}
}
sum=sum+min;
b[p]=1;
c[m+1]=p;
m++;
}
else
{
for(l=1;l<=n;l++)
if(b[l]==0)//这个可以放到下面
{
for(k=1;k<=m;k++)
{
k=c[k];
if(a[l][k]<min && l!=k)//
{
min=a[l][k];
p=l;
}
}
}
sum=sum+min;
b[p]=1;
c[m+1]=p;
m++;
}
}
printf("%d\n",sum);

for(i=1;i<=n-1;i++)
{
min=200;
for(j=1;j<=m;j++)
{
j=c[j];
for(k=1;k<=n;k++)
if(b[k]==0 && j!=k && a[j][k]<min)
{
min=a[j][k];
p=k;
}
}
sum=sum+min;
b[p]=1;
c[m+1]=p;
m++;
}

倚天照海花无数,流水高山心自知。
2007-03-20 11:45
快速回复:小女子求助
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014706 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved