蓝桥杯基础练习Huffuman树C语言-创新互联
解题思路:
1.从数列选出两个最小的数
实现方法:将数列排序,为了方便删除数据将数列从大到小排序,最小的两个数就是a[n-2],a[n-1]。
2.求最小两个数之和,从数列中删除这两个数,并将两数之和插入数列中组成新的数列。不断重复以上步骤,直到数列中只剩一个数。
实现方法:递归
#includeint sum = 0;
void sort(int* a, int n)//选择排序(任意排序皆可)
{
int i, j,t;
for (i = 1; i< n; i++)
{
t = a[i];
for (j = i - 1; j >= 0; j--)
{
if (t >a[j])
a[j + 1] = a[j];
else
break;
}
a[j + 1] = t;
}
}
void fact(int* a, int n)
{
sort(a, n);
sum += a[n - 1] + a[n - 2];
a[n-2]= a[n - 1] + a[n - 2];
if (n == 2)
return;
else
return fact(a, n - 1);
}
int main()
{
int i, j, n;
int a[1000];
scanf("%d", &n);
for (i = 0; i< n; i++)
scanf("%d", &a[i]);
fact(a, n);
printf("%d", sum);
return 0;
}
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
当前标题:蓝桥杯基础练习Huffuman树C语言-创新互联
文章起源:http://ybzwz.com/article/egsoe.html