work 4

//work4.1


#include<stdio.h>
#include<stdlib.h>
#include<string.h>
 
typedef struct node{
    int weight;
    int index;
    struct node* lchild;
    struct node* rchild;
}huffmanode,*huffmantree;
 
huffmantree create(int a[],int n)
{
    int i,j;
    huffmantree *h1,h;
    h1=malloc(n*sizeof(huffmanode));
    for(i=0;i<n;i++)
    {
        h1[i]=malloc(sizeof(huffmanode));
        h1[i]->weight=a[i];
        h1[i]->index=i;
        h1[i]->lchild=NULL;
        h1[i]->rchild=NULL;
    }
    for(i=0;i<n-1;++i)
    {
        int m1=-1,m2;
        for(j=0;j<n;++j)
        {
            if(h1[j]!=NULL&&m1==-1)
            {
                m1=j;
                continue;
            }
            else if(h1[j]!=NULL)
            {
                m2=j;
                break;
            }
        }
        for(j=m2;j<n;++j)
        {
            if(h1[j]!=NULL)
            {
                if(h1[j]->weight<h1[m1]->weight)
                {
                    m2=m1;
                    m1=j;
                }
                else if(h1[j]->weight<h1[m2]->weight)
                {
                    m2=j;
                }
            }
        }
        h=malloc(sizeof(huffmanode));
        h->weight=h1[m1]->weight+h1[m2]->weight;
        h->lchild=h1[m1];
        h->rchild=h1[m2];
        h1[m1]=h;
        h1[m2]=NULL;
    }
    free(h1);
    return h;
}
 
void decode(char str1[],huffmantree h,char str2[])
{
    int i;
    int num[100];
    huffmantree h1=NULL;
    for(i=0;i<strlen(str1);++i)
    {
        if(str1[i]=='0')
        {
            num[i]=0;
        }
        else
        {
            num[i]=1;
        }
    }
    if(h)
    {
        i=0;
        while(i<strlen(str1))
        {
            h1=h;
            while(h1->lchild!=NULL&&h1->rchild!=NULL)
            {
                if(num[i]==0)
                {
                    h1=h1->lchild;
                }
                else
                {
                    h1=h1->rchild;
                }
                i++;
            }
            printf("%c",str2[h1->index]);
        }
    }
}
 
int main()
{
    int a[8]={7,19,2,6,32,3,21,10};
    char str2[8]={'a','b','c','d','e','f','g','h'};
    huffmantree h=NULL;
    h=create(a,8);
    char str1[100]="\0";
    scanf("%s",str1);
    decode(str1,h,str2);
}

//work 4.2

#include <stdlib.h>
 #include <stdio.h>
void insert(long arr[], long num, int size){
    long temp = (num % 10 + size * size) % 10;
    if(arr[temp] == 0) {arr[temp] = num;}
    else{
        if(size == 5) return;
        insert(arr, num, size+1);
    }
}
 
void visit(long arr[]){
    for(int i=0;i<9;i++){
        printf("%ld,", arr[i]);
    }
    printf("%ld\n", arr[9]);
}
 
int main(){
    long num, arr[10]={0};
    while(scanf("%ld,",&num) != EOF){
        insert(arr, num, 0);
    }
    visit(arr);
}

//work 4.3

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <malloc.h>
#include <ctype.h>
#define maxn 100010
int head[maxn];
int coun=0;
typedef struct LNode{
    char name[20];
    int road;
    int next;
}LNode;
LNode v[maxn];
int HashId(char *str){
    int len=strlen(str);
    long long sum=0;
    for(int i=0;i<len;i++){
        if(isdigit(str[i])) sum=sum*10+str[i]-'0';
        else sum=sum*10+10;
    }
    return (int)(sum%100010);
}
void Add(char *str,int index,int m){
   int flag=0;
   for(int i=head[index];i!=-1;i=v[i].next)
       if(strcmp(v[i].name,str)==0){
            v[i].road+=m;
            flag=1;
       }
    if(!flag){
        strcpy(v[coun].name,str);
        v[coun].road=m;
        v[coun].next=head[index];
        head[index]=coun;
        coun++;
    }
}
int main(){
    int n,k;
    scanf("%d %d",&n,&k);
    memset(head,-1,sizeof(head));
    char str[20]; int m;
    while(n--){
        getchar();
        scanf("%s %d",str,&m);
        if(m<k) m=k;
        int index=HashId(str);
        Add(str,index,m);
    }
        int num;scanf("%d",&num);
        while(num--){
            getchar();
            scanf("%s",str);
            int id=HashId(str);
            int t=0;
            for(int i=head[id];i!=-1;i=v[i].next){
                if(strcmp(v[i].name,str)==0){
                    printf("%d\n",v[i].road);
                    t=1;
                }
            }
            if(!t) printf("No Info\n");
        }
}

优化这段代码: IF VR(v_alarm1).0 <> ax_alarm.ax_dial THEN VR(v_alarm1).0 = ax_alarm.ax_dial IF VR(v_alarm1).1 <> ax_alarm.ax_scr1_updown THEN VR(v_alarm1).1 = ax_alarm.ax_scr1_updown IF VR(v_alarm1).2 <> ax_alarm.ax_scr1_halftone THEN VR(v_alarm1).2 = ax_alarm.ax_scr1_halftone IF VR(v_alarm1).3 <> ax_alarm.ax_scr1_scraper THEN VR(v_alarm1).3 = ax_alarm.ax_scr1_scraper IF VR(v_alarm1).4 <> ax_alarm.ax_scr2_updown THEN VR(v_alarm1).4 = ax_alarm.ax_scr2_updown IF VR(v_alarm1).5 <> ax_alarm.ax_scr2_halftone THEN VR(v_alarm1).5 = ax_alarm.ax_scr2_halftone IF VR(v_alarm1).6 <> ax_alarm.ax_scr2_scraper THEN VR(v_alarm1).6 = ax_alarm.ax_scr2_scraper IF VR(v_alarm1).7 <> ax_alarm.ax_scr3_updown THEN VR(v_alarm1).7 = ax_alarm.ax_scr3_updown IF VR(v_alarm1).8 <> ax_alarm.ax_scr3_halftone THEN VR(v_alarm1).8 = ax_alarm.ax_scr3_halftone IF VR(v_alarm1).9 <> ax_alarm.ax_scr3_scraper THEN VR(v_alarm1).9 = ax_alarm.ax_scr3_scraper IF VR(v_alarm1).10 <> ax_alarm.ax_goin_spin THEN VR(v_alarm1).10 = ax_alarm.ax_goin_spin IF VR(v_alarm1).11 <> ax_alarm.ax_output_spin THEN VR(v_alarm1).11 = ax_alarm.ax_output_spin IF VR(v_alarm1).12 <> ax_alarm.ax_tl THEN VR(v_alarm1).12 = ax_alarm.ax_tl IF VR(v_alarm1).13 <> ax_alarm.ax_work1 THEN VR(v_alarm1).13 = ax_alarm.ax_work1 IF VR(v_alarm1).14 <> ax_alarm.ax_work2 THEN VR(v_alarm1).14 = ax_alarm.ax_work2 IF VR(v_alarm1).15 <> ax_alarm.ax_work3 THEN VR(v_alarm1).15 = ax_alarm.ax_work3 IF VR(v_alarm2).0 <> ax_alarm.ax_work4 THEN VR(v_alarm2).0 = ax_alarm.ax_work4 IF VR(v_alarm2).1 <> ax_alarm.ax_work5 THEN VR(v_alarm2).1 = ax_alarm.ax_work5 IF VR(v_alarm2).2 <> ax_alarm.ax_work6 THEN VR(v_alarm2).2 = ax_alarm.ax_work6 IF VR(v_alarm2).3 <> ax_alarm.ax_work7 THEN VR(v_alarm2).3 = ax_alarm.ax_work7 IF VR(v_alarm2).4 <> ax_alarm.ax_work8 THEN VR(v_alarm2).4 = ax_alarm.ax_work8 IF VR(v_alarm2).5 <> ax_alarm.ax_work9 THEN VR(v_alarm2).5 = ax_alarm.ax_work9 IF VR(v_alarm2).6 <> ax_alarm.ax_work10 THEN VR(v_alarm2).6 = ax_alarm.ax_work10 IF VR(v_warn1).0 <> ax_warn.ax_dial THEN VR(v_warn1).0 = ax_warn.ax_dial IF VR(v_warn1).1 <> ax_warn.ax_scr1_updown THEN VR(v_warn1).1 = ax_warn.ax_scr1_updown IF VR(v_warn1).2 <> ax_warn.ax_scr1_halftone THEN VR(v_warn1).2 = ax_warn.ax_scr1_halftone IF VR(v_warn1).3 <> ax_warn.ax_scr1_scraper THEN VR(v_warn1).3 = ax_warn.ax_scr1_scraper IF VR(v_warn1).4 <> ax_warn.ax_scr2_updown THEN VR(v_warn1).4 = ax_warn.ax_scr2_updown IF VR(v_warn1).5 <> ax_warn.ax_scr2_halftone THEN VR(v_warn1).5 = ax_warn.ax_scr2_halftone IF VR(v_warn1).6 <> ax_warn.ax_scr2_scraper THEN VR(v_warn1).6 = ax_warn.ax_scr2_scraper IF VR(v_warn1).7 <> ax_warn.ax_scr3_updown THEN VR(v_warn1).7 = ax_warn.ax_scr3_updown IF VR(v_warn1).8 <> ax_warn.ax_scr3_halftone THEN VR(v_warn1).8 = ax_warn.ax_scr3_halftone IF VR(v_warn1).9 <> ax_warn.ax_scr3_scraper THEN VR(v_warn1).9 = ax_warn.ax_scr3_scraper IF VR(v_warn1).10 <> ax_warn.ax_goin_spin THEN VR(v_warn1).10 = ax_warn.ax_goin_spin IF VR(v_warn1).11 <> ax_warn.ax_output_spin THEN VR(v_warn1).11 = ax_warn.ax_output_spin IF VR(v_warn1).12 <> ax_warn.ax_tl THEN VR(v_warn1).12 = ax_warn.ax_tl IF VR(v_warn1).13 <> ax_warn.ax_work1 THEN VR(v_warn1).13 = ax_warn.ax_work1 IF VR(v_warn1).14 <> ax_warn.ax_work2 THEN VR(v_warn1).14 = ax_warn.ax_work2 IF VR(v_warn1).15 <> ax_warn.ax_work3 THEN VR(v_warn1).15 = ax_warn.ax_work3 IF VR(v_warn2).0 <> ax_warn.ax_work4 THEN VR(v_warn2).0 = ax_warn.ax_work4 IF VR(v_warn2).1 <> ax_warn.ax_work5 THEN VR(v_warn2).1 = ax_warn.ax_work5 IF VR(v_warn2).2 <> ax_warn.ax_work6 THEN VR(v_warn2).2 = ax_warn.ax_work6 IF VR(v_warn2).3 <> ax_warn.ax_work7 THEN VR(v_warn2).3 = ax_warn.ax_work7 IF VR(v_warn2).4 <> ax_warn.ax_work8 THEN VR(v_warn2).4 = ax_warn.ax_work8 IF VR(v_warn2).5 <> ax_warn.ax_work9 THEN VR(v_warn2).5 = ax_warn.ax_work9 IF VR(v_warn2).6 <> ax_warn.ax_work10 THEN VR(v_warn2).6 = ax_warn.ax_work10
03-08
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值