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. 更新项目经常使用的Linux命令

    在公司经常在服务器上更新项目,总结了自己经常使用的命令: 1.删除:rm -rf 文件名2.复制:copy 文件 目标地址3.压缩:zip -r 压缩后文件名 被压缩目录4.移动:move 文件 目标 ...

  2. 较优H圈matlab实现

    大家好,我是小鸭酱,博客地址为:http://www.cnblogs.com/xiaoyajiang %解决完备图中的较优H圈 clc clear w = [ inf 6 1 8 3 1 ;...   ...

  3. 需要熟悉的几个调试命令:objdump/pmap/ldd/stace

    最近要编译很多库,还涉及到若干进程操作,所以就把相关的命令记录下来. 一,objdump命令 该命令适用于ELF可执行文件,常用的命令如下: objdump -h xx.o : 输出ELF文件的各个段 ...

  4. jquery easyui二次开发总结(二)

    1.easyui tab增加“关闭所有页”.“关闭非当前页”功能. //tab增加“关闭所有页”和“关闭非当前页”的功能 $("#tabs").tabs({ onAdd:funct ...

  5. Android从相册读取图片

    Uri originalUri = data.getData();        //获得图片的uri  bm = MediaStore.Images.Media.getBitmap(resolver ...

  6. mobile js

    5个jQuery的备选轻量级移动客户端开发(Mobile development)类库 http://www.gbin1.com/technology/jquerymobile/20120423mob ...

  7. STLtoSVG,and SVG to Bmp

    先用这两个工具: Slic3R或者Skeinforge:这个两个工具的作用就是把STL文件切片为叠加的矢量图(SVG格式) 因为SVG是分层的,一层一层的把每层都转换成一张Bmp文件 听说ImageM ...

  8. MVC4.0系统开发新手历程(四)数据列表查询

    任何系统都不可避免的就是数据的查询展示,我觉得这里最值得一说的就是分部视图以及数据分页了 首先添加控制器 在控制其上面的名字为Index的Action上面右击,添加视图即可添加对应的视图,分部视图呈现 ...

  9. cf493A Vasya and Football

    A. Vasya and Football time limit per test 2 seconds memory limit per test 256 megabytes input standa ...

  10. poj 2407 Relatives(简单欧拉函数)

    Description Given n, a positive integer, how many positive integers less than n are relatively prime ...