2017.12.24(查找最接近元素等)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2017.12.24(查找最接近元素等)相关的知识,希望对你有一定的参考价值。

2017.12.24

 贪心,分治综合习题(2)

1.查找最接近元素

思路:由题可知,n<=100000,m<=10000,如果每一个m都把这个非降序序列扫一遍的话,那么时间复杂的将要到达1010那么多,明显不合题意;所以,只能用二分查找来优化时间复杂度。

核心代码:

int left=1,right=n,mid,bz=0;
	while(left<right-1){
		bz=0;
		mid=(left+right)/2;
		if(k==num[mid]){
			printf("%d\n",k);
			bz=1;
			break;
		}
		else if(k>num[mid])
			left=mid;
		else if(k<num[mid])
			right=mid;
	}
	if(num[right]-k<k-num[left]&&bz==0){
		printf("%d\n",num[right]);
	}
	else if(num[right]-k>=k-num[left]&&bz==0){
		printf("%d\n",num[left]);
	}

状态:AC

2.全排列

思路:这个题目的数据范围不大,K<=6,所以可以使用没有任何优化的搜索。题目保证输入的字符串是已经排好序的,所以可以就可以把输入的字符串作为一个有序序列来使用。

核心代码:

void search(int n){
	int i,j;
	if(n==l){
		print();
		return;
	}
	for(i=0;i<l;i++){
		if(book[i]==0){
			book[i]=1;
			answer[n]=letter[i];
			search(n+1);
			book[i]=0;
		}
	}
	return;
}

状态:AC

以上是关于2017.12.24(查找最接近元素等)的主要内容,如果未能解决你的问题,请参考以下文章

JAVA寻找任意元素之和最接近指定数值的程序

查找最接近的元素

查找最接近的元素

Bailian4134 查找最接近的元素二分查找

在数组中查找三个元素之和最接近给定数字

如何从数组中查找最接近500的数字