1 条题解
-
0
C :
#include <stdio.h> #include <stdlib.h> typedef struct node { char symbol; int freq; int parent; int tag; }NODE; int main() { NODE* tree; int i,j; int n; int min; int index1,index2; int depth; char ch; int sum; scanf("%d",&n); while(n>=1) { tree=(NODE*)malloc((2*n-1)*sizeof(NODE)); for(i=0;i<n;i++) { scanf("%c%c%d",&ch,&tree[i].symbol,&tree[i].freq); tree[i].parent=-1; tree[i].tag=0; } for(i=n;i<2*n-1;i++) { min=RAND_MAX; for(j=0;j<i;j++) { if(tree[j].tag==0&&tree[j].freq<min) { min=tree[j].freq; index1=j; } } tree[index1].tag=1; min=RAND_MAX; for(j=0;j<i;j++) { if(tree[j].tag==0&&tree[j].freq<min) { min=tree[j].freq; index2=j; } } tree[index2].tag=1; tree[i].freq=tree[index1].freq+tree[index2].freq; tree[i].parent=-1; tree[i].tag=0; tree[index1].parent=i; tree[index2].parent=i; } sum=0; for(i=0;i<n;i++) { depth=0; j=i; while(tree[j].parent!=-1) { j=tree[j].parent; depth++; } sum+=depth*tree[i].freq; } printf("%d\n",sum); scanf("%d",&n); } }C++ :
#include <stdio.h> #include <stdlib.h> typedef struct node { char symbol; int freq; int parent; int tag; }NODE; int main() { NODE* tree; int i,j; int n; int min; int index1,index2; int depth; char ch; int sum; scanf("%d",&n); while(n>=1) { tree=(NODE*)malloc((2*n-1)*sizeof(NODE)); for(i=0;i<n;i++) { scanf("%c%c%d",&ch,&tree[i].symbol,&tree[i].freq); tree[i].parent=-1; tree[i].tag=0; } for(i=n;i<2*n-1;i++) { min=RAND_MAX; for(j=0;j<i;j++) { if(tree[j].tag==0&&tree[j].freq<min) { min=tree[j].freq; index1=j; } } tree[index1].tag=1; min=RAND_MAX; for(j=0;j<i;j++) { if(tree[j].tag==0&&tree[j].freq<min) { min=tree[j].freq; index2=j; } } tree[index2].tag=1; tree[i].freq=tree[index1].freq+tree[index2].freq; tree[i].parent=-1; tree[i].tag=0; tree[index1].parent=i; tree[index2].parent=i; } sum=0; for(i=0;i<n;i++) { depth=0; j=i; while(tree[j].parent!=-1) { j=tree[j].parent; depth++; } sum+=depth*tree[i].freq; } printf("%d\n",sum); scanf("%d",&n); } }
- 1
信息
- ID
- 3552
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- (无)
- 递交数
- 0
- 已通过
- 0
- 上传者