蓝桥杯练习题
问题描述
给出两个整数集合A、B,求出他们的交集、并集以及B在A中的余集。
输入格式
第一行为一个整数n,表示集合A中的元素个数。
第二行有n个互不相同的用空格隔开的整数,表示集合A中的元素。
第三行为一个整数m,表示集合B中的元素个数。
第四行有m个互不相同的用空格隔开的整数,表示集合B中的元素。
集合中的所有元素均为int范围内的整数,n、m<=1000。
输出格式
第一行按从小到大的顺序输出A、B交集中的所有元素。
第二行按从小到大的顺序输出A、B并集中的所有元素。
第三行按从小到大的顺序输出B在A中的余集中的所有元素。
package c算法训练;
import java.util.Arrays;
/*
* 问题描述
给出两个整数集合A、B,求出他们的交集、并集以及B在A中的余集。
输入格式
第一行为一个整数n,表示集合A中的元素个数。
第二行有n个互不相同的用空格隔开的整数,表示集合A中的元素。
第三行为一个整数m,表示集合B中的元素个数。
第四行有m个互不相同的用空格隔开的整数,表示集合B中的元素。
集合中的所有元素均为int范围内的整数,n、m<=1000。
输出格式
第一行按从小到大的顺序输出A、B交集中的所有元素。
第二行按从小到大的顺序输出A、B并集中的所有元素。
第三行按从小到大的顺序输出B在A中的余集中的所有元素。
*/
import java.util.Scanner;
public class 集合运算 {
public static void main(String[] args) {
int k=0,c = 0,d=0;
Scanner in=new Scanner(System.in);
int a=in.nextInt();
int arr[]=new int[a];
for(int i=0;i<arr.length;i++) {
arr[i]=in.nextInt();
}
Arrays.sort(arr);
int b=in.nextInt();
int arr1[]=new int [b];
for(int i=0;i<arr1.length;i++) {
arr1[i]=in.nextInt();
}
for(int i=0;i<arr.length;i++) {
for(int j=0;j<arr1.length;j++) {
if(arr[i]==arr1[i]) {
k++;//记录重复值的数组下标
continue;
}
}
}
//建立从重复值的数组;
int []arr2=new int[k];
for(int i=0;i<arr.length;i++) {
for(int j=0;j<arr1.length;j++) {
if( arr[i]==arr[j]){
arr2[c]=arr[i];
c++;//记录重复数
continue;
}
}
}
Arrays.sort(arr2);//排序然后输出
for(int i=0;i<arr2.length;i++) {
System.out.print(arr2[i]+" ");
}
System.out.println();
//将交集元素删除
int []arr3=new int[a-c];
for(int i=0;i<arr.length;i++) {
for(int j=0;j<arr2.length;j++) {
if(arr[i]==arr2[j]) {
j=arr2.length-1;
continue;
}
if(arr[i]!=arr2[j]&&j==arr2.length-1) {
arr3[d++]=arr[i];
if(d==a-c) {
d--;
}
}
}
}
int[]aa=new int [a-c+b];
for(int i=0;i<arr3.length;i++) {
if(arr3.length!=arr.length)
aa[i]=arr3[i];
if(aa.length==arr.length){
aa[i]=arr[i];
}
}
if(arr3.length!=arr.length){
for(int j=arr3.length;j<aa.length;j++) {
aa[j]=arr1[c++];
}
}
Arrays.parallelSort(aa);
for(int i=0;i<aa.length;i++) {
System.out.println(aa[i]+" ");
}System.out.println();
Arrays.sort(arr3);
Arrays.sort(arr);
if(arr3.length!=arr.length)
for(int i=0;i<arr3.length;i++) {
System.out.println(arr3[i]+" ");
}
if(arr3.length==arr.length) {
for(int j=0;j<arr.length;j++) {
System.out.println(arr[j]+" ");
}
}
}
}