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
 
 
 
错误代码:
#include<stdio.h>
int main()
{
 int n,m,i,j;
 int str1[100],str2[100];
 while(scanf("%d%d",&n,&m)!=EOF){
  if(n==0 && m==0) return 0;
  else{
   for(i=0;i<n;i++){
    scanf("%d",&str1[i]);
   }
   for(j=0;j<m;j++){
    scanf("%d",&str2[j]);
   }
   i=0;
   while(i<n){
    for(j=0;j<m;j++){
     if(str1[i]==str2[j] && n>1){
      for(int k=i;k<n-1;k++){
       str1[k]=str1[k+1];
      }
      n--;
      break;
     }
     if(str1[i]==str2[j] && n==1){
      printf("NULL\n");
      
     }
    }
    if(j==m) i++;
   }
   for(i=0;i<n;i++){
    int temp;
    if(str1[i]>str1[i+1]){
     temp=str1[i+1];
     str1[i+1]=str1[i];
     str1[i]=temp;
    }
   }
   if(n>1){
    for(i=0;i<n;i++){
     printf("%d",str1[i]);
     if(i<n-1) printf(" ");
     else printf("\n");
    }
   }
  }
 }
 return 0;
}
 
随便找的:都是先排序再删除,while里的什么鬼???看不懂。。。。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int num1[105],num2[105],des[105],n,m;
int main( )
{
    while( scanf( "%d%d",&n,&m ),n|m )
    {
           memset( des,0,sizeof( des ) );
           for( int i = 0; i < n; ++i )
                scanf( "%d",&num1[i] );
           for( int j = 0; j < m; ++j )
                scanf( "%d",&num2[j] );
           for( int i = 0,f; i < n - 1;++i )//排序
           {
                f = 0;
                for( int j = 1; j < n - i; ++j )
                     if( num1[j-1] > num1[j] )
                         num1[j-1] ^= num1[j] ^= num1[j-1] ^= num1[j],f = 1;
                if( !f )
                    break;
            }
           for( int i = 0,f; i < m; ++i )//A-B
                for( int j = 0; j < n; ++j )
                     if( num1[j] == num2[i] )
                       des[j] = 1;
           int f = 0;
           for( int i = 0; i < n; ++i )//输出
                if( !des[i] )
                {
                    printf( "%d ",num1[i] );
                    f = 1;
                }
           if( !f )//如果都没有
               printf( "NULL" );
           puts( "" );
           }
    return 0;

hdu 2034的更多相关文章

  1. hdu 2034人见人爱A-B

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2034 解题思路:set的基本用法 #include<iostream> #include& ...

  2. hdu 2034 人见人爱A-B

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2034 人见人爱A-B Description 参加过上个月月赛的同学一定还记得其中的一个最简单的题目, ...

  3. hdu 2034 - 集合操作

    题意:集合A,B,计算集合差A-B(求只在集合A内的数) 解法: 选用STL内的集合set 1.建立set 1: #include<set> 2:   3: set<int> ...

  4. HDU 2034 人见人爱A-B 分类: ACM 2015-06-23 23:42 9人阅读 评论(0) 收藏

    人见人爱A-B Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Su ...

  5. hdu 2034 改革春风吹满地 多边形面积

    改革春风吹满地 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Problem ...

  6. HDU 2034 人见人爱A-B【STL/set】

    人见人爱A-B Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Sub ...

  7. 致初学者(三): HDU 2033~ 2043题解

    下面继续给出HDU 2033~2043的AC程序,供大家参考.2033~2043这10道题就被归结为“ACM程序设计期末考试(2006/06/07) ”和“2005实验班短学期考试 ”. HDU 20 ...

  8. HDU——PKU题目分类

    HDU 模拟题, 枚举1002 1004 1013 1015 1017 1020 1022 1029 1031 1033 1034 1035 1036 1037 1039 1042 1047 1048 ...

  9. 杭电 2034 人见人爱A-B

    http://acm.hdu.edu.cn/showproblem.php?pid=2034 人见人爱A-B Time Limit: 2000/1000 MS (Java/Others)    Mem ...

随机推荐

  1. ImageView显示不出来图片

    问题?? 用ImageView控件方法:public void setImageBitmap(Bitmap bm)来显示生成的bimap,结果在图片显示区域显示一片空白,而且其他控件颜色没变化,造成I ...

  2. android开发基本流程

    ------->Directory Structure Manifest.xml + activity/layout + R ------->Dalvik Debug Monitor Se ...

  3. 2015第22周六Java反射、泛型、容器简介

    Java的反射非常强大,传递class, 可以动态的生成该类.取得这个类的所有信息,包括里面的属性.方法以及构造函数等,甚至可以取得其父类或父接口里面的内容. obj.getClass().getDe ...

  4. 黑马程序员_Java面向对象2_继承

    4.面向对象_继承 4.1继承的概述 提高了代码的复用性. 让类与类之间产生了关系,有了这个关系,才有多态的特性. 注意:千万不要为了获取其他类的功能而去继承,简化代码而继承.必须是类与类之间有所属关 ...

  5. 【HDU1712】ACboy needs your help(分组背包)

    将背包九讲往后看了看,学习了一下分组背包.来做几道入门题,试试手. #include <iostream> #include <cstring> #include <cs ...

  6. ops

    consists several key projects separately stand-alone connected entities massive scalability massive ...

  7. MySQL查询当前数据上一条和下一条的记录

    如果ID是主键或者有索引,可以直接查找: 方法一: 查询上一条记录的SQL语句(如果有其他的查询条件记得加上other_conditions以免出现不必要的错误): ) [and other_cond ...

  8. HTML--鼠标事件

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  9. STL采用的标准模板库

    一.map,set set集合容器实现了红黑树(Red-Black Tree)的平衡二叉检索树的数据结构,在插入元素时,它会自动调整二叉树的排列,把该元素放到适当的位置,以确保每个子树根节点的键值大于 ...

  10. [Redux] Passing the Store Down Implicitly via Context

    We have to write a lot of boiler plate code to pass this chore down as a prop. But there is another ...