ACM训练题
来源:互联网 发布:js身份证号计算年龄 编辑:程序博客网 时间:2024/06/05 02:43
每组输入数据占1行,每行数据的开始是2个整数n(0<=n<=100)和m(0<=m<=100),分别表示集合A和集合B的元素个数,然后紧跟着n+m个元素,前面n个元素属于集合A,其余的属于集合B. 每个元素为不超出int范围的整数,元素之间有一个空格隔开. 如果n=0并且m=0表示输入的结束,不做处理。#include<cstdio>#include<iostream>//冒泡排序void sort( int* array, int lenth ){int i,j;int temp;for( i=0; i<lenth-1; i++ )for( j=i+1; j<lenth; j++ ){if( array[i] > array[j] ){temp = array[j];array[j] = array[i];array[i] = temp;}}} int A[105], B[105];bool flag[105]; //A中元素是否删除的标志位int main(){int m,n;int delNum;while( scanf("%d %d",&n, &m) && (n!=0||m!=0) ){//读入集合A,并对集合A中的元素进行排序for( int i=0; i<n; i++ ){scanf("%d",A+i);flag[i] = 1; //将A中的元素是否删除的标志初始化为全部置位1,表示该元素不需要删除}sort( A, n );//读入集合B,并对集合B中的元素进行排序for( int i=0; i<m; i++ )scanf("%d",B+i);sort( B, m );delNum = 0; //记录A中元素删除的个数//对于排序后的集合A,依次判断每个元素在集合B中是否出现(因为A和B均已排序,在集合B中比较的起始位置为上次和集合A中元素相等的元素位置的下一个坐标)int Bpos = 0; //记录集合B中上一次和A中元素相等的元素位置的下一个坐标for( int i=0; i<n; i++ ){for( int j=Bpos; j<m; j++ )if( A[i] == B[j] ) //说明集合A中的元素在集合B中出现,那该元素应该删除,flag[i]变为0,变更集合B访问的起始位置{flag[i] = 0;delNum ++;Bpos = j+1;break;}}//输出全部删除的情况if( delNum == n ){printf("NULL\n");continue;}//输出未全部删除的情况for( int i=0; i<n; i++ ){if( flag[i] )printf( "%d ", A[i] );}printf("\n");}//system("pause");return 0;}
阅读全文
0 0
- ACM训练题
- ACM训练题
- ACM暑假训练题单
- acm训练
- ACM训练
- ACM 蓝桥杯 小题训练1
- ACM的分类训练题集
- 2017-8-17ACM训练题
- 【训练计划】ACM训练计划
- ACM训练方案
- ACM训练方法
- ACM DP训练专辑
- ACM算法训练参照
- ACM训练计划表
- ACM训练表
- ACM训练方案
- ACM入门训练指南
- ACM训练方法
- Spark源码核心与开发实战---Spark RDD与Spark API编程实例
- JavaScript操作Cookie实现“历史搜索”
- php实现返回上一页的功能的3种有效方法
- 机器学习之AdaBoost元算法(七)
- Git安装及SSH Key管理之Mac篇
- ACM训练题
- Vue.js两级路由
- 19个MySQL性能优化要点解析
- (3)学习SpringBoot 之 Junit测试
- 关于Flexsns Sky 卡80%,以及乱码的解决问题
- 数据库的数据独立性体现在哪里?
- 光学字符识别(OCR,Optical Character Recognition)
- C 语言学习
- [知了堂学习笔记]_Jquery_Validate 表单校验的使用[知了堂学习笔记]_Jquery_Validate 表单校验的使用