杭电OJ题 1412 {A} + {B} 解题报告

来源:互联网 发布:总裁小说改编的网络剧 编辑:程序博客网 时间:2024/06/05 19:55

{A} + {B}

Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 8022    Accepted Submission(s): 3272



Problem Description
给你两个集合,要求{A} + {B}.
注:同一个集合中不会有两个相同的元素.
 

Input
每组输入数据分为三行,第一行有两个数字n,m(0<n,m<=10000),分别表示集合A和集合B的元素个数.后两行分别表示集合A和集合B.每个元素为不超出int范围的整数,每个元素之间有一个空格隔开.
 

Output
针对每组数据输出一行数据,表示合并后的集合,要求从小到大输出,每个元素之间有一个空格隔开.
 

Sample Input
1 212 31 211 2
 

Sample Output
1 2 31 2
 
——————————————————————————————
先对每个集合排序,然后进行合并操作

/**************************** *Name:{A} + {B}.c *Tags:ACM water ****************************/#include <stdio.h>int main(){      int a[10000], b[10000];      int n, m, i, j, t;      while(scanf("%d%d", &n, &m) != EOF) {    for(i = 0; i < n; i++) {  scanf("%d", a+i);    }    for(i = 0; i < m; i++) {  scanf("%d", b+i);    }    for(i = 0; i < n-1; i++) {  for(j = 0; j < n-1-i; j++) {if(a[j] > a[j+1]) {      t = a[j];      a[j] = a[j+1];      a[j+1] = t;}  }    }    for(i = 0; i < m-1; i++) {  for(j = 0; j < m-1-i; j++) {if(b[j] > b[j+1]) {      t = b[j];      b[j] = b[j+1];      b[j+1] = t;}  }    }    i = 0;    j = 0;    t = 0;    while(i < n && j < m) {  if(a[i] < b[j]) {if(t == 0) {      printf("%d", a[i]);      t = 1;} else {      printf(" %d", a[i]);}i++;  }  else if(a[i] > b[j]) {if(t == 0) {      printf("%d", b[j]);      t = 1;} else {      printf(" %d", b[j]);}j++;  } else {if(t == 0) {      printf("%d", a[i]);      t = 1;} else {      printf(" %d", a[i]);}i++;j++;  }    }    while(i < n) {  printf(" %d", a[i]);  i++;    }    while(j < m) {  printf(" %d", b[j]);  j++;    }    printf("\n");      }      return 0;}


原创粉丝点击