zoukankan      html  css  js  c++  java
  • 2034-人见人爱A-B(c++实现)

    Problem Description
    参加过上个月月赛的同学一定还记得其中的一个最简单的题目,就是{A}+{B},那个题目求的是两个集合的并集,今天我们这个A-B求的是两个集合的差,就是做集合的减法运算。(当然,大家都知道集合的定义,就是同一个集合中不会有两个相同的元素,这里还是提醒大家一下)
    呵呵,很简单吧?
    Input
    每组输入数据占1行,每行数据的开始是2个整数n(0<=n<=100)和m(0<=m<=100),分别表示集合A和集合B的元素个数,然后紧跟着n+m个元素,前面n个元素属于集合A,其余的属于集合B. 每个元素为不超出int范围的整数,元素之间有一个空格隔开.
    如果n=0并且m=0表示输入的结束,不做处理。
    Output
    针对每组数据输出一行数据,表示A-B的结果,如果结果为空集合,则输出“NULL”,否则从小到大输出结果,为了简化问题,每个元素后面跟一个空格.
     
    Sample Input
    3 3 1 2 3 1 4 7
    3 7 2 5 8 2 3 4 5 6 7 8 0 0
     
    Sample Output
    2 3
    NULL
    用两个数组分别存储集合A,B,再对A,B排序方便进行比较。用两个整型变量i,j标记AB中当前比较的元素,如果Ai<Bj或者Ai>Bm-1输出Ai,i++进入下次循环;如果Ai==bj,i++,j++,进入下次循环;如果Ai>Bj,j++,进入下次循环;直到遍历A中所有元素。
      这种方便的优点在于没有重复比较B中的元素。
     1 #include<iostream>
     2 using namespace std;
     3 
     4 static int A[101],B[101];
     5 void input(int a[],int n){
     6     for(int i=0;i<n;i++)
     7         cin>>a[i];
     8 }
     9 void sort(int a[],int n){
    10     for(int i=0;i<n-1;i++){
    11         int max=0;
    12         for(int j=0;j<n-i;j++)
    13             if(a[j]>a[max])
    14                 max=j;
    15         int temp=a[max];a[max]=a[n-1-i];a[n-1-i]=temp;
    16     }
    17 }
    18 void compare(int n,int m){
    19     int i=0,j=0,temp=0;    //temp标记是否输出NULL
    20     while(i<n){
    21         if(A[i]<B[j]||A[i]>B[m-1]){
    22             cout<<A[i]<<" ";
    23             temp=1;
    24             i++;continue; 
    25         }
    26         if(A[i]==B[j]){
    27             i++,j++;
    28             continue;
    29         }
    30         if(A[i]>B[j]){
    31             j++;continue;
    32         }
    33     }
    34     if(!temp)
    35         cout<<"NULL";
    36 }
    37 int main(){
    38     int n,m;
    39     while((cin>>n>>m)&&(n||m)){
    40         input(A,n);sort(A,n);
    41         input(B,m);sort(B,m);
    42         compare(n,m); 
    43         cout<<endl;
    44     }
    45     return 0;
    46 }
    View Code
  • 相关阅读:
    《std测试》
    《关于cmp返回值的理解》
    《武汉大学2020年新生程序设计竞赛》
    《多校打卡 * 2018 Multi-University Training Contest 1》
    《牛客练习赛28-B》
    python使用sqlite示例
    python 使用mysql示例
    使用virtualenv为应用提供了隔离的Python运行环境
    生成字母验证码图片
    模拟微博登录
  • 原文地址:https://www.cnblogs.com/wuyoucao/p/4988158.html
Copyright © 2011-2022 走看看