zoukankan      html  css  js  c++  java
  • C语言拯救计划Day2-4之找出不是两个数组共有的元素

    ///这个题思路还挺巧妙的

    ///又学会一招,嘿嘿~

    给定两个整型数组,本题要求找出不是两者共有的元素。

    输入格式:

    输入分别在两行中给出两个整型数组,每行先给出正整数N(≤),随后是N个整数,其间以空格分隔。

    输出格式:

    在一行中按照数字给出的顺序输出不是两数组共有的元素,数字间以空格分隔,但行末不得有多余的空格。题目保证至少存在一个这样的数字。同一数字不重复输出。

    输入样例:

    10 3 -5 2 8 0 3 5 -15 9 100
    11 6 4 8 2 6 -5 9 0 100 8 1
    
     

    输出样例:

    3 5 -15 6 4 1


     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 /**
     4 思路:
     5     先拿A数组去跟B数组比一遍
     6     然后再反过来比一遍,
     7     把不是共有的数放到C数组中,
     8     最后消去数组C中相同的数输出,
     9     这样输出的就不会存在同一个数了
    10 */
    11 
    12 int main()
    13 {
    14         ///输入预处理
    15         int m;
    16         scanf("%d",&m);
    17         int a[20],i;
    18         for(i=0;i<m;i++)
    19             scanf("%d",&a[i]);
    20         int n;
    21         scanf("%d",&n);
    22         int b[20];
    23         for(i=0;i<n;i++)
    24             scanf("%d",&b[i]);
    25         int j;
    26         int c[20],k;
    27         k=0;
    28         ///找出数组a在数组b中不存在的
    29         for(i=0;i<m;i++)///遍历数组a中的每一个值
    30         {
    31             for(j=0;j<n;j++)///将其与b数组比较
    32             {
    33                 if(a[i]==b[j])///如果相等就break
    34                     break;
    35             }
    36             if(j>=n)///如果将数组a的一个值与数组b中的每一个值比较后仍然没有相等的
    37                     ///说明数组a中的该值是b数组中不存在的
    38             {
    39                 c[k]=a[i];///就将a数组的值赋值给另一个c数组保存
    40                 k++;
    41             }
    42         }    
    43         
    44         ///找出数组b在数组a中不存在的---方法同上
    45         for(i=0;i<n;i++)
    46         {
    47             for(j=0;j<m;j++)
    48             {
    49                 if(b[i]==a[j])///注意a,b数组的书写
    50                     break;
    51             }
    52             if(j>=m)//注意细节问题,n和m不要弄混
    53             {
    54                 c[k]=b[i];
    55                 k++;
    56             }
    57         }
    58         printf("%d",c[0]);//先输出c数组的第一个元素,保证格式第一个数字不带空格
    59         
    60         ///
    61         for(i=1;i<k;i++)///从1到k遍历一遍
    62         {
    63             for(j=0;j<i;j++)///两两对比
    64             {
    65                 if(c[i]==c[j])///判断C数组中是否有相同的数字
    66                     break;///如果有就Break掉
    67             }        
    68             if(j>=i)///如果没有,就输出出来,即为最后的结果
    69                 printf(" %d",c[i]);///注意格式,前面有一个空格隔开
    70         }
    71         printf("
    ");///最后别忘了输出回车哦
    72     
    73     return 0;
    74 }

    最后输出保证格式正确还有一种方法:

     1         f=0;
     2     for(i=0;i<num;i++){    //排除相同的数值 
     3         for(j=0;j<i;j++)
     4             if(c[i]==c[j]) break;
     5         if(j==i){
     6             if(f!=0) printf(" ");
     7             printf("%d",c[i]);
     8             f++;
     9         }
    10     }
    11     return 012 }



  • 相关阅读:
    Raft论文的一些问题
    乱序日志同步成员变更方案
    OceanBase RPC机制简要说明
    OceanBase server处理网络包的回调逻辑
    比较下OceanBase的选举协议和Raft的选举协议的区别
    TokuDB调研文档
    给MySQL官方提交的bug report备忘
    记录一个__lll_lock_wait_private错误
    关于MySQL redo log,挖些坑,慢慢填
    A little problem for pt-pmp
  • 原文地址:https://www.cnblogs.com/noobchen/p/12774076.html
Copyright © 2011-2022 走看看