zoukankan      html  css  js  c++  java
  • 基础实验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]);
        }
    }

                     

    勤能补拙,熟能生巧
  • 相关阅读:
    支持向量机SVM知识点概括
    决策树知识点概括
    HDU 3081 Marriage Match II
    HDU 3572 Task Schedule
    HDU 4888 Redraw Beautiful Drawings
    Poj 2728 Desert King
    HDU 3926 Hand in Hand
    HDU 1598 find the most comfortable road
    HDU 4393 Throw nails
    POJ 1486 Sorting Slides
  • 原文地址:https://www.cnblogs.com/snzhong/p/12463335.html
Copyright © 2011-2022 走看看