(TOJ 1215) 데이터 구조 연습 문제 - 병합 표
9156 단어 데이터 구조
이미 알 고 있 는 바 와 vb 는 각각 비 체감 질서 있 는 선형 표 로 바 와 vb 를 새로운 선형 표 vc 로 합병 하고 vc 는 여전히 비 체감 질서 가 있다.
이 문제 에서 선형 표 요 소 는 정수 이다.선형 표 의 최대 길 이 는 1000 이다.
입력
입력 데 이 터 는 여러 그룹 이 있 고 첫 번 째 행위 테스트 데이터 의 그룹 수 n 이 있 으 며 그 다음은 2n 줄 이 며 각 그룹의 테스트 데 이 터 는 두 줄 이 있 습 니 다.
첫 번 째 줄 의 첫 번 째 수 는 바 의 요소 갯 수 이 고 그 다음은 n 개의 정수 이 며 바 의 모든 요 소 를 대표 합 니 다.
두 번 째 줄 의 첫 번 째 수 는 vb 의 요소 갯 수 이 고 그 다음은 n 개의 정수 이 며 vb 의 모든 요 소 를 대표 합 니 다.
출력
출력 합 친 길이 및 vc 의 모든 요소
샘플 입력
2
2 1 2
2 2 3
3 1 2 3
3 4 5 6
샘플 출력
4 1 2 2 3
6 1 2 3 4 5 6
제시 하 다.
너 도 체인 시 계 를 사용 하여 실현 할 수 있 으 니, 시간 이 있 으 면 연습 해라.
1 #include<stdio.h>
2 #include<math.h>
3 #include<string.h>
4 #include<ctype.h>
5
6 int a[1000],b[1000],c[2000];
7
8 void deal(int a[], int m, int b[], int n)
9 {
10 int i,j,k,s;
11 i=k=j=s=0;
12 while(i<m && j<n)
13 {
14 if(a[i]<b[j])
15 {
16 c[k]=a[i];
17 i++;k++;
18 }
19 else if(a[i]==b[j])
20 {
21 c[k]=a[i];
22 c[k+1]=a[i];
23 k+=2;
24 i++;j++;
25 }
26 else
27 {
28 c[k]=b[j];
29 j++;k++;
30 }
31 }
32 if(i==m)
33 {
34 while(j<n) c[k++]=b[j++];
35 }
36 if(j==n)
37 {
38 while(i<m) c[k++]=a[i++];
39 }
40 printf("%d",k);
41 for(i=0; i<k; i++)
42 printf(" %d",c[i]);
43 printf("
");
44 }
45
46 void solve()
47 {
48 int N,i,m,n;
49 scanf("%d",&N);
50 while(N--)
51 {
52 scanf("%d",&m);
53 for(i=0; i<m; i++)
54 scanf("%d",&a[i]);
55 scanf("%d",&n);
56 for(i=0; i<n; i++)
57 scanf("%d",&b[i]);
58 deal(a,m,b,n);
59 }
60 }
61
62
63 int main()
64 {
65 solve();
66 getchar();
67 getchar();
68 return 0;
69 }
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.