码迷,mamicode.com
首页 > 编程语言 > 详细

三个有序数组的公共元素

时间:2016-01-07 08:53:04      阅读:285      评论:0      收藏:0      [点我收藏+]

标签:

#include <stdio.h>
#include <stdlib.h>

/*
	求三个有序数组的公共元素。
*/

/*
	思路:
	由于数组由小到大存储,
	故若arr1[now1]<arr2[now2],
	则arr1在now1之前的项也不可能等于arr2[now2],
	故可将now1+1。
	反之同理。
*/

int main(){
	int arr1[] = {0,2,5,6,9};
	int arr2[] = {2,4,5,7,8};
	int arr3[] = {0,2,3,4,5,7,9};
	int len1 = 5, len2 = 5, len3 = 7;
	for (int now1 = 0, now2 = 0, now3 = 0; (now1 < len1) && (now2 < len2) && (now3 < len3);){
		if (arr1[now1] < arr2[now2]){
			if (arr2[now2] < arr3[now3]){
				++now1;
				++now2;
			}
			else if (arr2[now2] > arr3[now3]){
				++now1;
				++now3;
			}
			else
				++now1;
		}
		else if (arr1[now1] > arr2[now2]){
			if (arr1[now1] < arr3[now3]){
				++now2;
				++now3;
			}
			else if (arr1[now1] > arr3[now3]){
				++now2;
				++now3;
			}
			else
				++now2;
		}
		else if (arr1[now1] == arr2[now2]){
			if (arr1[now1] > arr3[now3])
				++now3;
			else if (arr1[now1] < arr3[now3]){
				++now1;
				++now2;
			}
			else{
				printf("%d ",arr1[now1]);
				++now1;
				++now2;
				++now3;
			}
		}
	}
	printf("\n");
	system("pause");
	return 0;
}

  

三个有序数组的公共元素

标签:

原文地址:http://www.cnblogs.com/mutaohengheng/p/5108040.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!