皮卡丘的编号是? 将两个 一维数组的数 保存到另一个 一维数组当中,且不准有重复的数字
皮卡丘的编号是?
Time Limit: 1000MS
Memory Limit: 65536KB
Problem Description
精灵宝可梦有成百上千种,皮卡丘只是其中之一哦。这么多种宝可梦当然需要用编号来记录下来,皮卡丘的编号就是25号。宝可梦图鉴是一种能记录遇到的宝可梦的神奇工具,可是它还没有完全开发完成。现在请你帮忙写一个程序,完善图鉴的记录功能。
记录功能需要完成这样的要求:如果遇到的宝可梦在图鉴中没有记录,则将该宝可梦的编号加入到图鉴中;如果遇到的宝可梦已经在图鉴中记录,则不处理。
例如:图鉴中只记录了25和26号宝可梦,又遇到了27号宝可梦,那图鉴中将会记录25、 26 、27 号宝可梦;如果在此基础上再次遇到27号宝可梦,则图鉴中还是只有25 、26 、27号宝可梦的记录。
Input
输入数据有多组,到EOF结束。
每组数据,先输入2个整数n,m(1<=n<=807,1<=m<=20),n代表图鉴中已经记录的宝可梦种类数,m代表接下来遇到的宝可梦数量。接下来输入n个整数Ai(1<=Ai<=807),保证Ai是按升序排序的。最后输入m个整数Bi(1<=Bi<=807),代表遇到的宝可梦的编号。
Output
对于每组数据,输出最后图鉴中记录的宝可梦种类数,并将图鉴按照升序打印,编号之间用空格隔开。
Example Input
7 3 151 251 386 493 649 721 807 151 386 807 2 5 25 26 27 24 22 23 25 5 5 1 4 7 25 133 52 52 52 52 52
Example Output
7 151 251 386 493 649 721 807 6 22 23 24 25 26 27 6 1 4 7 25 52 133
#include<stdio.h> int main(void) { int a[808], b[20], c[1000], i, j, k, t, w, n, m; while(~scanf("%d %d", &n, &m)) { k = 0; w = 0; for(i = 0; i < n; i++) { scanf("%d", &a[i]); c[k++] = a[i]; } for(i = 0; i < m; i++) { scanf("%d", &b[i]); for(j = 0; j < n; j++) { if(b[i] == a[j]) { break; } if(b[i] == b[i - 1]) { break; } if(j == n - 1) { c[k++] = b[i]; w++; } } } w += n; for(i = 0; i < w; i++) { for(j = 0; j < w - i - 1; j++) { if(c[j] > c[j + 1]) { t = c[j], c[j] = c[j + 1], c[j + 1] = t; } } } printf("%d\n", w); for(i = 0; i < w; i++) { printf("%d%c", c[i], i == w - 1?'\n':' '); } } return 0; }