1 条题解
-
0
C :
#include <stdio.h> int huffman(int n,int p[100]); int main() { int m; scanf("%d",&m); int i,j; int n; int p[100]; int sum[10]; for(i=0;i<m;i++) { scanf("%d",&n); for(j=0;j<n;j++) { scanf("%d",&p[j]); } sum[i]=huffman(n,p); } for(i=0;i<m;i++) { printf("%d\n",sum[i]); } return 0; } int huffman(int n,int *p) { int a=0; int b=1; int i; int j=0; int sum=0; while(j<n-1) { for(i=0;i<n;i++) { if(p[a]>p[i]&&i!=b) { a=i; } } for(i=0;i<n;i++) { if(p[b]>p[i]&&i!=a) { b=i; } } p[a]=p[a]+p[b]; p[b]=1000000; sum+=p[a]; j++; } return sum; }
C++ :
#include <stdio.h> int main() { //freopen("1.txt","r",stdin); //freopen("2.txt","w",stdout); int M; scanf("%d", &M); while(M--) { int i, j, k, l, n; int count = 0; scanf("%d", &n); int a[999]; for (i = 0; i < n; i++) scanf("%d", &a[i]); for (i = n; i > 1; i--) { k = 0, l = 1; if (a[0] < a[1]) k = 1, l = 0; for (j = 2; j < i; j++) { if (a[j] <= a[k]) { if (a[j] < a[l]) k = l, l = j; else k = j; } } a[l] += a[k]; count += a[l]; for (j = k; j < i - 1; j++) a[j] = a[j + 1]; } printf("%d\n", count); } return 0; }
- 1
信息
- ID
- 2882
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- (无)
- 递交数
- 0
- 已通过
- 0
- 上传者