• 基础实验8-1.1 单身狗 (25分)


      解题思路:1、标记是否是单身,如果单身,则直接加入输出数组,如果不单身,则寻找其伙伴是否出现在派对中,如果没出现,则加入输出数组

                        2、对输出数组升序输出

    #include <stdio.h>
    #include <string.h>
    #define MAX 100000
    int a[MAX];
    void Init(int a[]) {//初始化标记数组
        int i;
        for(i=0; i<MAX; i++) {
            a[i]=-1;
        }
    }
    int cmp(const void *a,const void *b) {
        return (*(int *)a-*(int *)b);
    }
    int IsSingle(int x) {//判断是否单身
        if(a[x]==-1)
            return 1;
        return 0;
    }
    int FindPartner(int x,int arr[],int m) {//查找伙伴是否参加派对里
        int i;
        for(i=0; i<m; i++) {
            if(a[x]==arr[i]) {
                return 1;
            }
        }
        return 0;
    }
    int Partition(int a[],int low,int high) {
        int pivot=a[low];
        while(low<high) {
            while(low<high) {
                if(a[high]<pivot) {
                    a[low]=a[high];
                    break;
                }
                high--;
            }
            while(low<high) {
                if(a[low]>pivot) {
                    a[high]=a[low];
                    break;
                }
                low++;
            }
        }
        a[low]=pivot;
        return low;
    }
    void Sort(int a[],int low,int high) {
        if(low<high) {
            int t=Partition(a,low,high);
            Sort(a,low,t-1);
            Sort(a,t+1,high);
        }
    
    }
    int main() {
        int n;
        scanf("%d",&n);
        int i,x,y;
        for(i=0; i<n; i++) {
            scanf("%d %d",&x,&y);
            a[x]=y;
            a[y]=x;
        }
        int m;
        scanf("%d",&m);
        int arr[m],s[m];
        memset(s,0,sizeof(s));
        memset(arr,0,sizeof(arr));
        for(i=0; i<m; i++) {
            scanf("%d",&arr[i]);
        }
        int k=0;
        for(i=0; i<m; i++) {
            if(IsSingle(arr[i])) {
                s[k++]=arr[i];
            } else {
                if(!FindPartner(arr[i],arr,m))
                    s[k++]=arr[i];
            }
        }
        Sort(s,0,k-1);
        for(i=0; i<k; i++) {
            if(i)
            printf(" ");
            printf("%05d",s[i]);
        }
    }

                     

    勤能补拙,熟能生巧
  • 相关阅读:
    yum downgrade降级安装包
    yapi内网部署
    tomcat启动提示"java.net.BindException: 地址已在使用"
    u盘安装centos系统识别nvme固态硬盘
    识别thinkpad USB2.0 or USB3.0
    window10激活
    onedriver business到期
    实用站点分享
    window挂载synology目录
    Spring注解@Qualifier的详细用法
  • 原文地址:https://www.cnblogs.com/snzhong/p/12463335.html
Copyright © 2020-2023  润新知