(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 }

좋은 웹페이지 즐겨찾기