实验7-1-4-一维数组 找出不是两个数组共有的元素 (20 分)

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

输入格式:

输入分别在两行中给出两个整型数组,每行先给出正整数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 int main()
 3 {
 4     int one[30] = { 0 };
 5     int two[30] = { 0 };
 6     int three[30] = { 12 };
 7     int N,M,i,j,h,k=0;
 8     scanf("%d", &N);
 9     for (i = 0; i < N; i++) {
10         scanf("%d", &one[i]);
11     }
12     scanf("%d", &M);
13     for (j = 0; j < M; j++) {
14         scanf("%d", &two[j]);
15     }
16     int cnt = 0;
17     for (i = 0; i < N; i++) {
18         cnt = 0;
19         for (j = 0; j < M; j++) {
20             if (one[i] == two[j]) {
21                 cnt = 1;
22                 break;
23             }
24         }
25         if (cnt == 0) {
26             for (h = 0; h < k+1; h++) {
27                 if (three[h] == one[i]&&three[h]!=0) {
28                     cnt = 1;
29                 }
30             }
31             if (cnt == 0) {
32                 three[k] = one[i];
33                 k++;
34             }
35         }
36     }
37     for (j = 0; j < M; j++) {
38         cnt = 0;
39         for (i = 0; i < N; i++) {
40             if (two[j] == one[i]) {
41                 cnt = 1;
42                 break;
43             }
44         }
45         if (cnt == 0) {
46             for (h = 0; h < k + 1; h++) {
47                 if (three[h] == two[j]&&three[h] != 0) {
48                     cnt = 1;
49                 }
50             }
51             if (cnt == 0) {
52                 three[k] = two[j];
53                 k++;
54             }
55         }
56     }
57     for (h = 0; h < k - 1; h++) {
58         printf("%d ", three[h]);
59     }
60     printf("%d", three[h]);
61     return 0;
62
63 }

第一次忽略了输出的数有0的情况,其与数组初始化为0冲突,改进了这行代码后能解决当three[h]等于零时造成的错误答案。

原文地址:https://www.cnblogs.com/nekonekomiao/p/11617486.html

时间: 2024-10-25 19:44:43

实验7-1-4-一维数组 找出不是两个数组共有的元素 (20 分)的相关文章

数组-06. 找出不是两个数组共有的元素

数组-06. 找出不是两个数组共有的元素(20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 张彤彧(浙江大学) 给定两个整型数组,本题要求找出不是两者共有的元素. 输入格式: 输入分别在2行中给出2个整型数组,每行先给出正整数N(<=20),随后是N个整数,其间以空格分隔. 输出格式: 在一行中按照数字给出的顺序输出不是两数组共有的元素,数字间以空格分隔,但行末不得有多余的空格.题目保证至少存在一个这样的数字.同一数字不重复

数组-06. 找出不是两个数组共有的元素(20)

1 #include<iostream> 2 using namespace std; 3 int main(){ 4 int i,j,k=0,l,a[20],b[20],c[40],m,n; 5 cin>>m; 6 for(i=0;i<m;++i) 7 cin>>a[i]; 8 cin>>n; 9 for(j=0;j<n;++j) 10 cin>>b[j]; 11 12 for(i=0;i<m;++i){ 13 for(j=0

7-4 找出不是两个数组共有的元素(20 分)

7-4 找出不是两个数组共有的元素(20 分) 给定两个整型数组,本题要求找出不是两者共有的元素. 输入格式: 输入分别在两行中给出两个整型数组,每行先给出正整数N(≤20),随后是N个整数,其间以空格分隔. 输出格式: 在一行中按照数字给出的顺序输出不是两数组共有的元素,数字间以空格分隔,但行末不得有多余的空格.题目保证至少存在一个这样的数字.同一数字不重复输出. 输入样例: 10 3 -5 2 8 0 3 5 -15 9 100 11 6 4 8 2 6 -5 9 0 100 8 1 输出样

找出不是两个数组共有的元素

1)题目要求同一数字不重复输出.所以必须将不同的数字存在另一个数组中,再将这个数组重新判断是否出现相同数字,最后输出: 2)for (i = 1; i < k; i++) { for (j = 0; j < i; j++) { if (c[i] == c[j])break;//判断是否重复: } if (j == i)printf(" %d", c[i]); } 3) 原文地址:https://www.cnblogs.com/linhai123/p/12053886.htm

找出数字在已排序数组中出现的次数

一,问题描述 假设给定一个有序的整型数组arr,以及一个整数 k,问 k在数组中出现了几次? 二,求解思路 ①数组是有序的,故可考虑用二分查找 ②如果能找到 k 在数组中第一次出现时的索引位置first_index 和 最后一次出现时的索引位置last_index 就可以知道 k 出现的次数了: (last_index - first_index) + 1 而对于有序数组而言,可以通过二分查找求出某个数第一次出现的索引位置 和 最后一次出现的索引位置.故总的时间复杂度为O(logN) ③特殊情况

两个有序数组找出相同数据

两个有序数组找出相同数据,要求最简单的算法复杂度. class Program { static void Main(string[] args) { int Low = 0; int[] m = new int[] { 2, 4, 6, 9, 12, 13, 15, 16 }; int[] n = new int[] { 3, 5, 9, 12, 15 }; foreach (int item in m) { Search(n, ref Low, n.Length - 1, item); }

面试题3(二):不修改数组找出重复的数字

// 面试题3(二):不修改数组找出重复的数字// 题目:在一个长度为n+1的数组里的所有数字都在1到n的范围内,所以数组中至// 少有一个数字是重复的.请找出数组中任意一个重复的数字,但不能修改输入的// 数组.例如,如果输入长度为8的数组{2, 3, 5, 4, 3, 2, 6, 7},那么对应的// 输出是重复的数字2或者3. 解题思路: 不能修改数组,可以创建一个长度为n+1的辅助数组,空间复杂度为O(n). 如果用时间换空间的话,可以使用二分查找的思想. 元素范围为1~n,但是有n+1

需要排序的最短子数组的长度——是一个排序好的数组,中间某一部分被打乱了,让你找出打乱的那个子数组

需要排序的最短子数组的长度 貌似在leetcode上遇到过,就是一个排序好的数组,中间某一部分被打乱了,让你找出打乱的那个子数组. from:https://blog.csdn.net/behboyhiex/article/details/80758686 [题目] 给定一个无序数组arr,求出需要排序的最短子数组长度. 例如: arr = [1, 5, 3, 4, 2, 6, 7]返回4,因为只有[5, 3, 4, 2]需要排序. [思路] 双指针 第一次从左向右遍历,找左边比当前位置大的 第

[题目2]不修改数组找出重复的数字

代码实现: package j2; /** * 不修改数组找出重复的数字 * Created by admin on 2019/5/14. */ public class FindDuplicate3 { public static void main(String[] args) { int arr[] = {2,3,5,4,3,2,6,7}; System.out.println(duplicate(arr,arr.length)); } public static int duplicat